美文网首页
xib创建的view(有修改不了frame的时候)

xib创建的view(有修改不了frame的时候)

作者: yayun_he | 来源:发表于2017-02-05 15:35 被阅读0次

    可能有些人看了,会说 既然写xib创建了为什么又重写init方法,在init方法中加载xib,真是多此一举,神经病。这些其实是因为当时遇到要改变布局什么的2而xib不好控制,但是view又是用xib绘制的,所以才搞了这一出~~如果亲们看了不需要,就直接close就ok了

    - (void)drawRect:(CGRect)rect; // 重绘
    
    - (void)setNeedsDisplay; 
    标记为需要重绘,异步调用drawRect
    

    drawRect调用是在Controller->loadView,,Controller->viewDidLoad 两方法之后调用的。所以不用担心在控制器中,这些View的drawRect就开始画了。这样可以在控制器中设置一些值给View(如果这些View draw的时候需要用到某些变量值).

    1、如果在UIView初始化时没有设置rect大小,将直接导致drawRect不被自动调用。
    2、该方法在调用sizeThatFits后被调用,所以可以先调用sizeToFit计算出size。然后系统自动调用drawRect:方法。

    @interface HotProductView ()
    {
        CGRect myframe;
    }
     
    @end
    @implementation HotProductView
    -(id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            self = [[NSBundle mainBundle] loadNibNamed:@"LGHeaderView" owner:self options:nil].lastObject;        
            myframe = frame;
        }
        return self;
    }
    -(void)drawRect:(CGRect)rect
    {
        self.frame=myframe;//关键点在这里
     
    }
    

    参考http://blog.csdn.net/xiaoxiaobukuang/article/details/51594157

    相关文章

      网友评论

          本文标题:xib创建的view(有修改不了frame的时候)

          本文链接:https://www.haomeiwen.com/subject/fxssuttx.html