2014-01-06 39 views
0

我用UIKit做了很多动画,并且我经常在viewDidLoad中存储任何动画视图的初始帧,以便始终在帧中显示xib中的帧。是否有访问xib的初始属性的快捷方式?

这是有点臭,似乎是那种会自动化的东西,但我似乎无法找到任何信息。 UIView上有一个存储初始xib帧大小的属性?或者可能是一个UIKit实用工具方法,通过名称扫描xib的xml属性值?

回答

0

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

为了使事情变得简单,只需为您的笔尖创建一个(其他)插座并覆盖其获取器。 例如,如果我们有LargeCell.xib,我们将为largeCelllargeCellPrototype创建一个出口。

然后,我们将为此原型创建一个懒惰访问器,以确保原型不为零,并且只加载一次。

- (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; 
相关问题