700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > iOS给View添加虚线边框不显示

iOS给View添加虚线边框不显示

时间:2020-10-11 22:32:13

相关推荐

iOS给View添加虚线边框不显示

项目场景:

国庆回来有小半个月没写代码了,生疏~国庆快乐啊!

今天浅浅的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了。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。