我试图通过对他们应用 bezierPathWithRoundedRect 来解决聊天气泡问题。一切都近乎完美。但是出于一些奇怪的原因,在某些情况下,其中一个角落对我来说比其他角落更大。为什么会发生这种情况并避免它呢?
我的代码:
bubbleContainer.layer.cornerRadius = 6.0;
UIRectCorner cornersOut = (UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomLeft);
UIRectCorner cornersIn = (UIRectCornerTopLeft | UIRectCornerTopRight | UIRectCornerBottomRight);
UIRectCorner corners = isOutMessage ? cornersOut : cornersIn;
UIBezierPath * maskPath = [UIBezierPath bezierPathWithRoundedRect:bubbleContainer.bounds byRoundingCorners:corners cornerRadii:CGSizeMake(17.0, 17.0)];
CAShapeLayer * maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = bubbleContainer.bounds;
maskLayer.path = maskPath.CGPath;
bubbleContainer.layer.mask = maskLayer;
正如您所看到的,带有文字的气泡" 111"和" 1111"有一个不同的右上角。没有其他的气泡遮盖,并且在应用遮罩后,气泡不会调整大小。