我用UIKit做了很多动画,并且我经常在viewDidLoad
中存储任何动画视图的初始帧,以便始终在帧中显示xib中的帧。是否有访问xib的初始属性的快捷方式?
这是有点臭,似乎是那种会自动化的东西,但我似乎无法找到任何信息。 UIView上有一个存储初始xib帧大小的属性?或者可能是一个UIKit实用工具方法,通过名称扫描xib的xml属性值?
我用UIKit做了很多动画,并且我经常在viewDidLoad
中存储任何动画视图的初始帧,以便始终在帧中显示xib中的帧。是否有访问xib的初始属性的快捷方式?
这是有点臭,似乎是那种会自动化的东西,但我似乎无法找到任何信息。 UIView上有一个存储初始xib帧大小的属性?或者可能是一个UIKit实用工具方法,通过名称扫描xib的xml属性值?
因此,虽然我无法找到任何方式来访问接口生成器文件的初始属性(除非你写一个IB XML解析器方式),我发现从Do I need to set heightForRowAtIndexPath if I am using a custom UITableViewCell?辉煌的替代品。您可以为每个IB对象创建两个插座 - 一个用于操作,另一个用于原型 - 它将保存xib的所有原始值,而不是从对象本身访问某些常量值(我希望获得self.attribute.nib.value
)。
为了使事情变得简单,只需为您的笔尖创建一个(其他)插座并覆盖其获取器。 例如,如果我们有LargeCell.xib
,我们将为largeCell
和largeCellPrototype
创建一个出口。
然后,我们将为此原型创建一个懒惰访问器,以确保原型不为零,并且只加载一次。
- (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;