美文网首页
AutoLayout, Xib, UIView

AutoLayout, Xib, UIView

作者: 深山问 | 来源:发表于2016-01-21 12:51 被阅读124次
    1. 不要在 - (void)viewDidLoad; 方法里获取Xib里面的frame值:
      举例:在一个XIb中含约束的View中, 代码添加一个自定义动态View;
      (1) XIb约束如下:


      Xib中约束

      (2) 添加子View代码

    CGRect backgroudViewFrame = CGRectMake(0, 0, CGRectGetWidth(self.backgroudView.bounds), CGRectGetHeight(self.backgroudView.bounds));
        UIView *frontView = [[UIView alloc] initWithFrame:backgroudViewFrame];
        frontView.backgroundColor = [UIColor yellowColor];
        [self.backgroudView addSubview:frontView];
        NSLog(@"%s,frame = %@",__func__,self.backgroudView);
    

    (3)在 -(void)viewDidLoad 和 - (void)viewDidAppear:(BOOL)animated中的输出分别是

    -[ViewController viewDidLoad],frame = <UIView: 0x78792640; frame = (36 70; 248 448); autoresize = RM+BM; layer = <CALayer: 0x78792810>>
    -[ViewController viewDidAppear:],frame = <UIView: 0x78792640; frame = (36 70; 248 360); autoresize = RM+BM; layer = <CALayer: 0x78792810>>
    

    总结:可以看到在viewDidLoad 和 viewDidAppera中获取的frame不一致。 在动态获取frame中,应该在viewDidApear中获取.

    相关文章

      网友评论

          本文标题:AutoLayout, Xib, UIView

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