解释awakeFromNib,initwithFrame用法

时间:2011-12-09 21:26:42

标签: objective-c

我正在浏览iTunes上的斯坦福iphone开发讲座,并在第5讲中遇到了这个问题。 我们正在尝试确保在设备旋转时进行重绘。 我有两个与此相关的问题:

  1. 什么是awakeFromNib,在其余代码中没有调用此方法,它是如何触发的?
  2. initwithFrame中的代码是做什么的?
  3. 谢谢。

    -(void)setup 
    {
          self.contentMode = UIViewContentModeRedraw;
    }
    
    -(void)awakeFromNib
    {
        [self setup];
    }
    
    -(id)initWithFrame:(CGRect)frame
    {
         self=[super initWithFrame:frame];
         if (self) {
            [self setup];
         }
         return self;
     }
    

2 个答案:

答案 0 :(得分:20)

完成加载笔尖后,awakeFromNib会调用

NSBundle。在初始化视图时,您实际上有两个不同的代码路径,具体取决于它是从nib加载还是在运行时创建的。如果它是从笔尖加载的,部分加载会通过调用initWithCoder:对其进行初始化,然后在连接所有出口后稍后调用awakeFromNib。如果以编程方式创建视图,则使用initWithFrame:初始化它(并且永远不会调用awakeFromNib,因为它未从nib加载)。

答案 1 :(得分:0)

首先,initWitFrame将使用给定的矩形空间初始化您使用的内容 CGRect是坐标位置。阅读CGRectMake。基本思路是CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)

对于你的下半部分,请检查this