我用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;