0

我在情节提要上创建了 8 个不同的对象(4 对 UIImageView 和 textview)并将它们中的每一个连接到 IBOutletCollection,但是当我这样做时

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

它返回

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

[infoElements count] 正确返回 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

4

1 回答 1

2

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

因此,如果您需要获取框架,您可以在- (void)viewDidLayoutSubviews. 但是,如果您计划操作框架,则应在使用自动布局时使用约束来执行此操作。

另一种选择是在情节提要中关闭自动布局。

于 2013-08-05T21:18:40.630 回答