搜索了一下,iOS真没有对应库。android 的shape太强大了。xml配置方便快捷。这点apple真不如google做得好。
今天搞下图:
这东西在android 分分钟搞定了。
开始着手做。
1.指定圆角
开始想加个蓝色shape背景,指定两个圆角,android 一分钟搞定,但对不起iOS没有现成方法。
需要用layer去画。
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.goodIcBg.bounds byRoundingCorners:UIRectCornerBottomLeft|UIRectCornerTopLeft cornerRadii:CGSizeMake(3, 3)]; CAShapeLayer *maskLayer = [CAShapeLayer layer]; maskLayer.frame = CGRectMake(0, 0, 22, 22); maskLayer.path = maskPath.CGPath; self.goodIcBg.layer.mask = maskLayer;
2.画出来了作为imageview背景吧。对不起达不到效果。iOS 没有padding说法。不能留边空白。
只好用了一个UIView作背景。再把imageview塞进去。
3.设置border作为padding .
4.border自带颜色,需求跟背景一样色。或者透明。
5.iOS 透明色:[UIColor clearColor]
self.recommGoodNameBg = [[UIView alloc]initWithFrame:CGRectMake(0 , 0, 105, 22)]; self.recommGoodNameBg.layer.borderWidth = 4 ; UIColor* recommGoogdBgColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.7f]; self.recommGoodNameBg.backgroundColor =recommGoogdBgColor; self.recommGoodNameBg.layer.borderColor =[UIColor clearColor].CGColor; UIBezierPath *recommGoogsNameMaskPath = [UIBezierPath bezierPathWithRoundedRect:self.recommGoodNameBg.bounds byRoundingCorners:UIRectCornerTopRight|UIRectCornerBottomRight cornerRadii:CGSizeMake(3, 3)]; CAShapeLayer *recommGoogsNameMask = [CAShapeLayer layer]; recommGoogsNameMask.frame = CGRectMake(0 , 0, 105, 22); recommGoogsNameMask.path = recommGoogsNameMaskPath.CGPath; self.recommGoodNameBg.layer.mask = recommGoogsNameMask; self.recommGoodName = [[UILabel alloc]init]; self.recommGoodName.textColor = [UIColor whiteColor]; self.recommGoodName.frame = CGRectMake(4 , 0, 93, 22); self.recommGoodName.text=@"华为P40 pro"; self.recommGoodName.font = [UIFont systemFontOfSize:12.0]; [self.recommGoodNameBg addSubview:self.recommGoodName];