iOS drawRect 和 awakeFromNib

今天想在一个view上绘制一个虚线边框,百度到的代码如下:

复制代码
    CAShapeLayer *borderLayer = [CAShapeLayer layer];
    borderLayer.frame = self.addButton.bounds;
    borderLayer.path = [UIBezierPath bezierPathWithRect:self.addButton.bounds].CGPath;
    borderLayer.lineWidth = 1.0;
    borderLayer.lineCap = @"square";
    //虚线边框
    borderLayer.lineDashPattern = @[@4, @2];
    
    borderLayer.fillColor = [UIColor clearColor].CGColor;
    borderLayer.strokeColor = [UIColor redColor].CGColor;
    [self.addButton.layer addSublayer:borderLayer];
复制代码

这是我的xib截图:

开始,我想把这段代码放到awakeFromNib函数中,结果发现frame总是不对,self.addButton 的宽度竟然比我模拟器的宽度都大,我的模拟器是320宽度,self.addButton的宽度是344. 我想为什么会是这么奇怪的值,后台看了一下xib的中的设置,一下子明白了。我在xib中,把self.addButton的宽度设定的就是344!awakeFromNib 这个函数中,得到的都是原始值,没有经过约束的调整。

之后我又实验了drawRect方法,这个方法是在awakeFromNib之后调用的,这个drawRect调用时,尺寸的约束应该是应用上了。得到了准确的宽度!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值