So *_* It 15 objective-c uiview uistoryboard
我有一个自定义的UIView子类,它在初始化过程中以编程方式添加子视图.我希望这个子视图与自定义UIView的宽度相同.
如果我以编程方式添加自定义UIView,我的代码工作正常.但是,当通过StoryBoard初始化UIView时,我无法获得自定义UIView的宽度.
// Init programatically
- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        NSLog (@"view: %f", self.frame.size.width);   //WILL return width
        NSLog (@"view: %f", self.bounds.size.width);  //WILL return width
    }
    return self;
}
// Init from storyboard
- (id)initWithCoder:(NSCoder *)aDecoder {
    self = [super initWithCoder:aDecoder];
    if (self) {
        NSLog (@"view: %f", self.frame.size.width);   //Returns 0
        NSLog (@"view: %f", self.bounds.size.width);  //Returns 0
    }
    return self;
}
Run Code Online (Sandbox Code Playgroud)
当initWithCoder:由StoryBoard运行时,UIView的框架和边界都返回为0.有没有办法在 initWithCoder 中访问UIView的尺寸?或者,至少在调用drawRect:之前访问维度?
谢谢.
Bre*_*ett 13
不是在init函数中设置子视图维度,而是在自定义视图的layoutSubviews方法中相对于自定义视图进行设置.在这里做这将意味着子视图的宽度也将随时更改,即使您更改自定义视图的维度在初始化后的任意点相匹配的自定义视图的宽度.