是否有访问xib初始属性的快捷方式?

时间:2014-01-06 01:59:00

标签: ios cocoa-touch

我用UIKit做了很多动画,我经常在viewDidLoad中存储任何动画视图的初始帧,以便始终在xib中显示对帧的引用。

这有点臭,看起来像是自动化的东西,但我似乎无法找到任何关于此的信息。 UIView上有一个存储初始xib帧大小的属性吗?或者也许是一个UIKit实用程序方法,它按名称扫描xib的xml中的属性值?

1 个答案:

答案 0 :(得分:0)

因此,虽然我找不到任何方法来访问接口构建器文件的初始属性(除非您计算用方式编写IB XML解析器),但我找到了Do I need to set heightForRowAtIndexPath if I am using a custom UITableViewCell?的精彩替代方案。而不是从对象本身访问某些常量值(我希望有self.attribute.nib.value),你可以为每个IB对象创建两个出口 - 一个用于操作,一个用于原型 - 它将保存所有原始值xib。

为简单起见,只需为您的笔尖创建一个(其他)插座并覆盖其getter。 例如,如果我们有LargeCell.xib,我们会为largeCell创建一个出口,为largeCellPrototype创建另一个出口。

然后我们将为这个原型制作一个惰性访问器,以确保原型不是nil并且只加载一次。

- (LargeCell*)largeCellPrototype
{
    if (!_largeCellPrototype)
    {                         
       [NSBundle mainBundle] loadNibNamed:NSStringFromClass([LargeCell class]) // Presuming you don't name files with reckless abandon
                                    owner:self
                                  options:nil];
    }
}

现在获取初始值就像

一样简单
CGFloat initialViewHeight = self.largeCellPrototype.frame.size.height;