@@ -30,6 +30,7 @@ public enum MessageStyle {
3030 case bubbleOutline( UIColor )
3131 case bubbleTail( TailCorner , TailStyle )
3232 case bubbleTailOutline( UIColor , TailCorner , TailStyle )
33+ case customImageTail( UIImage , TailCorner )
3334 case custom( ( MessageContainerView ) -> Void )
3435
3536 // MARK: Public
@@ -75,6 +76,20 @@ public enum MessageStyle {
7576 {
7677 return cachedImage
7778 }
79+
80+ func strechAndCache( image: UIImage ) -> UIImage {
81+ let stretchedImage = stretch ( image)
82+ if let imageCacheKey = imageCacheKey {
83+ MessageStyle . bubbleImageCache. setObject ( stretchedImage, forKey: imageCacheKey as NSString )
84+ }
85+ return stretchedImage
86+ }
87+
88+ if case . customImageTail( let image, let corner) = self {
89+ guard let cgImage = image. cgImage else { return nil }
90+ let image = UIImage ( cgImage: cgImage, scale: image. scale, orientation: corner. imageOrientation)
91+ return strechAndCache ( image: image)
92+ }
7893
7994 guard
8095 let imageName = imageName,
@@ -86,18 +101,14 @@ public enum MessageStyle {
86101 switch self {
87102 case . none, . custom:
88103 return nil
89- case . bubble, . bubbleOutline:
104+ case . bubble, . bubbleOutline, . customImageTail :
90105 break
91106 case . bubbleTail( let corner, _) , . bubbleTailOutline( _, let corner, _) :
92107 guard let cgImage = image. cgImage else { return nil }
93108 image = UIImage ( cgImage: cgImage, scale: image. scale, orientation: corner. imageOrientation)
94109 }
95110
96- let stretchedImage = stretch ( image)
97- if let imageCacheKey = imageCacheKey {
98- MessageStyle . bubbleImageCache. setObject ( stretchedImage, forKey: imageCacheKey as NSString )
99- }
100- return stretchedImage
111+ return strechAndCache ( image: image)
101112 }
102113
103114 // MARK: Internal
@@ -133,7 +144,7 @@ public enum MessageStyle {
133144 return " bubble_full " + tailStyle. imageNameSuffix
134145 case . bubbleTailOutline( _, _, let tailStyle) :
135146 return " bubble_outlined " + tailStyle. imageNameSuffix
136- case . none, . custom:
147+ case . none, . custom, . customImageTail :
137148 return nil
138149 }
139150 }
0 commit comments