IBOutletCollection中不同对象的帧返回空



我在故事板上创建了8个不同的对象(4对UIImageView和textview),并将每个对象连接到IBOutletCollection,但当我执行此时

for (UIView *element in infoElements) {
    NSLog(@"frame: %@", NSStringFromCGRect(element.frame));
}

它返回

frame: {{0, 0}, {0, 0}}

[infoElements计数]正确返回8

NSLog(@"element: %@", element);

正确返回对象,只缺少帧。我只需要IBOutletCollection中每个对象的位置(x和y)。

初始化如下:

@interface infoViewController : UIViewController{
    IBOutletCollection(UIView) NSArray *infoElements;
}
@property (nonatomic, retain) IBOutletCollection(UIView) NSArray *infoElements;

我在谷歌上搜索了好几个小时,没有发现有人有同样的问题(除了这个没有回答的问题),所以我认为我只是做错了

编辑

为了澄清,IBOutletCollection中的对象不在0,0的位置,并且大于0,0

我猜您使用的是自动布局。在这种情况下,在调用layoutSubviews之前不会设置框架。

所以,如果你需要得到帧,你可以在- (void)viewDidLayoutSubviews中这样做。但是,如果计划操纵框架,则在使用"自动布局"时应使用"约束"进行操作。

另一个选项是关闭情节提要中的"自动布局"。

最新更新