現在のコードをマスクサイズの:マスクは任意にサイズ変更可能なUIImageとUIImageViewは
self.backgroundImageView.image = [self.message imageOfSize:self.message.size]; // Random image, random size
UIImage *rightBubbleBackground = [[UIImage imageNamed:@"BubbleRight"]
resizableImageWithCapInsets:BubbleRightCapInsets
resizingMode:UIImageResizingModeStretch];
CALayer *mask = [CALayer layer];
mask.contents = (id)[rightBubbleBackground CGImage];
mask.frame = self.backgroundImageView.layer.frame;
self.backgroundImageView.layer.mask = mask;
self.backgroundImageView.layer.masksToBounds = YES;
これが正常に動作しません。マスクが適用されていますが、rightBubbleBackground
は、サイズ変更キャップのインセット(BubbleRightCapInsets
)が設定されていても、self.backgroundImageView
に合うように正しくサイズ変更されません。
オリジナル画像:
マスク画像(rightBubbleBackground
):
結果:
私はthis answerを見つけましたが、それは対称的な画像の場合にのみ機能します。たぶん私は私の使用のためにその答えを変更することができます。
私は 'mask.frameを考えます= self.backgroundImageView.layer.frame; 'は' mask.frame = self.backgroundImageView.layer.bounds; 'でなければなりません。レイヤのフレームが境界に等しくない場合、コードを使用するとマスクがシフトします。 – PowerQian