我有UIAlertView,我使用:
记录它的框架和边界 [self.alertView show];
NSLog(@"frame: %@", NSStringFromCGRect(self.alertView.frame));
NSLog(@"bounds: %@", NSStringFromCGRect(self.alertView.bounds));
我注意到框架和边界的宽度和高度是不同的。这怎么可能?
答案 0 :(得分:2)
来自UIView's frame, bounds, center, origin, when to use what?
框架 - 这是您最常用于普通iPhone应用程序的属性。大多数控件将相对于“包含”控件进行布局,因此
frame.origin
将直接对应控件需要显示的位置,frame.size
将决定控件的大小。bounds - 此属性不是定位属性,而是定义框架
UIView
“相对”的可绘制区域。默认情况下,此属性通常为(0,0,宽度,高度)。
话虽如此,bounds
大小与frame
大小不同并不奇怪也不罕见。由于在这种情况下bounds
rect小于frame
,因此只表示只绘制view
的一部分。
同时考虑UIAlertView
视图层次结构它比它看起来要复杂得多,并且它也经历了iOS 7的重大变化。
进一步说明这一点,这是文件中的陈述
UIAlertView
类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改。
这是一个很好的说法:这里是龙!