diff --git a/AsyncMessagesViewController.podspec b/AsyncMessagesViewController.podspec index 2300187..0697f08 100644 --- a/AsyncMessagesViewController.podspec +++ b/AsyncMessagesViewController.podspec @@ -14,7 +14,7 @@ Pod::Spec.new do |spec| spec.swift_version = '4.0' spec.requires_arc = true spec.source_files = 'Source/**/*.swift' - spec.ios.resource_bundle = { spec => 'Source/Assets/AsyncMessagesViewController.xcassets' } + spec.ios.resource_bundle = { 'AsyncMessagesViewController' => 'Source/Assets/AsyncMessagesViewController.xcassets' } spec.dependency 'Texture', '2.6' spec.dependency 'SlackTextViewController', '1.9.6' end diff --git a/Source/Controllers/MessageBubbleImageProvider.swift b/Source/Controllers/MessageBubbleImageProvider.swift index 423d024..ccbcb6c 100644 --- a/Source/Controllers/MessageBubbleImageProvider.swift +++ b/Source/Controllers/MessageBubbleImageProvider.swift @@ -29,7 +29,13 @@ open class MessageBubbleImageProvider { private let outgoingColor: UIColor private let incomingColor: UIColor private var imageCache = [MessageProperties: UIImage]() - + + // This resource bundle name must match with the on declare in podspec + // For example: + // spec.ios.resource_bundle = { 'AsyncMessagesViewController' => 'Source/Assets/AsyncMessagesViewController.xcassets' } + // Credit: https://stackoverflow.com/questions/35692265/how-to-load-resource-in-cocoapods-resource-bundle/35903720 + private static let RESOURCE_BUNDLE_NAME = "AsyncMessagesViewController.bundle" + public init(incomingColor: UIColor = kDefaultIncomingColor, outgoingColor: UIColor = kDefaultOutgoingColor) { self.incomingColor = incomingColor self.outgoingColor = outgoingColor @@ -51,8 +57,11 @@ open class MessageBubbleImageProvider { } private func buildBubbleImage(properties: MessageProperties) -> UIImage { + let bundle = Bundle(for: MessageBubbleImageProvider.self) + let resourceBundleUrl = bundle.resourceURL?.appendingPathComponent(MessageBubbleImageProvider.RESOURCE_BUNDLE_NAME) + let resourceBundle = Bundle(url: resourceBundleUrl!) let imageName = "bubble" + (properties.isOutgoing ? "_outgoing" : "_incoming") + (properties.hasTail ? "" : "_tailless") - let bubble = UIImage(named: imageName)! + let bubble = UIImage(named: imageName, in: resourceBundle, compatibleWith: nil)! do { var normalBubble = try bubble.imageMaskedWith(color: properties.isOutgoing ? outgoingColor : incomingColor)