gpt4 book ai didi

objective-c - 如何获取通过 initWithCoder :? 中的 Storyboard添加的自定义 UIView 的尺寸

转载 作者:太空狗 更新时间:2023-10-30 03:18:07 29 4
gpt4 key购买 nike

我有一个自定义的 UIView 子类,它在初始化期间以编程方式添加一个 subview 。我希望此 subview 与自定义 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;
}

当 StoryBoard 运行 initWithCoder: 时,UIView 的 frame 和 bounds 都返回为 0。有什么方法可以在 initWithCoder 中访问 UIView 的尺寸?或者,至少在调用 drawRect: 之前访问维度

谢谢。

最佳答案

与其在 init 函数中设置 subview 尺寸,不如在自定义 View 的 layoutSubviews 方法中相对于自定义 View 进行设置。在这里这样做意味着 subview 的宽度也将始终更改以匹配自定义 View 的宽度,即使您在初始化后的任何时候更改自定义 View 的尺寸也是如此。

关于objective-c - 如何获取通过 initWithCoder :? 中的 Storyboard添加的自定义 UIView 的尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15170573/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com