我用UIKit做了很多动画,我经常在viewDidLoad
中存储任何动画视图的初始帧,以便始终在xib中显示对帧的引用。
这有点臭,看起来像是自动化的东西,但我似乎无法找到任何关于此的信息。 UIView上有一个存储初始xib帧大小的属性吗?或者也许是一个UIKit实用程序方法,它按名称扫描xib的xml中的属性值?
答案 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;