zoukankan      html  css  js  c++  java
  • 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调用时,尺寸的约束应该是应用上了。得到了准确的宽度!

  • 相关阅读:
    MongoDB学习笔记-查询
    【ASP.NET MVC 回顾】HtmlHepler应用-分页组件
    浅谈.NET中闭包
    浅析 public static void main(String[] args)
    关于SQL Server 无法生成 FRunCM 线程(不完全)
    设计模式-02.单例模式
    设计模式-01.工厂模式
    GC垃圾回收机制
    Spring自学笔记
    关于面试
  • 原文地址:https://www.cnblogs.com/breezemist/p/5235750.html
Copyright © 2011-2022 走看看