Ron*_*bro 12 iphone interface-builder uiview nib
我有一个UIView的子类,需要根据它的宽度来计算它的高度.在代码中创建时一切正常.但是,当我尝试在"界面"构建器中创建视图时,虽然我覆盖了所有相关方法,但我无法在界面构建器中获取视图集的大小.
- (id)initWithCoder:(NSCoder *)aDecoder
{
NSLog(@"init with coder before super width %d",super.frame.size.width); // returns 0
self = [super initWithCoder:aDecoder];
NSLog(@"init with coder after super width %d",super.frame.size.width); // still returns 0
}
- (void) awakeFromNib
{
NSLog(@"width of view %d",super.frame.size.width); // Returns 0 as well
}
- (void) setFrame:(CGRect)aFrame
{
[super setFrame:aFrame]; // Called from initWithCoder by super. Correct frame size.
}
Run Code Online (Sandbox Code Playgroud)
所以我的下一个猜测是,我的视图的超级视图可能是在awakeFromNib之后设置我的视图框架.好吧事实证明它没有.我在我的视图上覆盖了setFrame,并在initWithCoder期间调用它.
所以这就是我目前所知道的:
任何帮助将不胜感激
TJe*_*Jez 15
如果扩展initWithCoder,请务必调用super方法.在这个超级电话会议期间setFrame,您的班级将会调用此电话.
然后,您可以重新使用标准initWithFrame呼叫.
我总是做以下事情:
- (id)initWithCoder:(NSCoder *)aDecoder {
self = [super initWithCoder:aDecoder]; // Required. setFrame will be called during this method.
return [self initWithFrame:[self frame]];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7953 次 |
| 最近记录: |