项目场景:
国庆回来有小半个月没写代码了,生疏~国庆快乐啊!
今天浅浅的UI验收,提了一个bug说我没画一个输入框背景的边框虚线,真的3Q了,其实吧我司一直用的摹客这个平台,浅浅吐槽一下,当选中某个控件的时候,这的确是实线啊,小王无语
未选中状态
选中状态
图示是我放大172%倍看出来的,摹客网编辑、看到请优化一下,感谢。
当然了,这不是问题主要原因。
问题描述
最常规的给View添加虚线边框,但是不显示
UIBezierPath *maskPath=[[UIBezierPath bezierPathWithRoundedRect:self.messageTf.bounds byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(10.5*FTGetScreenScale(), 10.5*FTGetScreenScale())] bezierPathByReversingPath];CAShapeLayer *border = [CAShapeLayer layer];//虚线的颜色border.strokeColor = [UIColor colorWithRed:151/255.0 green:151/255.0 blue:151/255.0 alpha:0.54].CGColor;border.masksToBounds = YES;//填充的颜色border.fillColor = [UIColor clearColor].CGColor;//设置路径border.path = maskPath.CGPath;border.frame = self.messageTf.bounds;border.lineCap = @"square";//虚线的宽度border.lineWidth = 1.f;//虚线的间隔border.lineDashPattern = @[@4, @4];[self.messageTf.layer addSublayer:border];
原因分析:
我在viewDidLoad 刷新UI用的mas定义self.messageTf控件,此时的长宽为0
原本以为是self.messageTf.bounds没有用self.messageTf.frame,一样无效
使用Masonryframe跟bounds为0的情况
解决方案:
在添加虚线前,直接刷新视图
,以获得视图的长和宽。
[self.view layoutIfNeeded];
同理,如果bounds为0的情况下,直接刷新一下布局就ok了。
如果觉得《iOS给View添加虚线边框不显示》对你有帮助,请点赞、收藏,并留下你的观点哦!