iOS 切圆角、borderWidth ⚠️注意点

部分圆角

  • 先设置fram
//满省
    self.lbMan.frame = CGRectMake(10*kFixRaxW, 7*kFixRaxW, 47*kFixRaxW, 22*kFixRax);
//左圆角
    UIBezierPath *maskPathMan = [UIBezierPath bezierPathWithRoundedRect:_lbMan.bounds byRoundingCorners:UIRectCornerTopLeft | UIRectCornerBottomLeft cornerRadii:CGSizeMake(10, 10)];
    CAShapeLayer *maskLayerMan = [[CAShapeLayer alloc] init];
    maskLayerMan.frame = _lbMan.bounds;
    maskLayerMan.path = maskPathMan.CGPath;
    _lbMan.layer.mask = maskLayerMan;
  • 如果是让label自适应的话,需要加上系统10之后的adjustsFontForContentSizeCategory方法。然后再切圆角
[lbMan sizeToFit];
if (iOS10) {
    lbMan.adjustsFontForContentSizeCategory = YES;
}

⚠️总之,一定要让空间先有frame,然后再设置部分圆角,否则会出现空间看不见控件的情况。

部分圆角之后,加borderWidth

  • 如果你直接设置borderWidth,部分圆角那里会有空白
lbSheng.layer.borderColor = WGColorHex(0xFFFF0033).CGColor;
lbSheng.layer.borderWidth=1.0f;
image.png
  • 正确的操作方式是这样:
self.lbSheng.frame = CGRectMake(57*kFixRaxW, 7*kFixRaxW, 83*kFixRaxW, 22*kFixRax);
    [self.lbSheng wg_shapeCorner:UIRectCornerTopRight | UIRectCornerBottomRight size:CGSizeMake(10, 10)];
    CAShapeLayer* shapeSheng = [CAShapeLayer layer];
    shapeSheng.path = ((CAShapeLayer *)self.lbSheng.layer.mask).path;
    shapeSheng.strokeColor = WGColorHex(0xFFFF0033).CGColor;//边框色
    shapeSheng.lineWidth = 1.0f;//边框宽度
    shapeSheng.fillColor = [UIColor clearColor].CGColor;//填充色
    [self.lbSheng.layer addSublayer:shapeSheng];//addSublayer
image.png

end.

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容