边界与UIAlertView的框架

时间:2013-11-02 21:36:08

标签: objective-c uikit

我有UIAlertView,我使用:

记录它的框架和边界
  [self.alertView show];
  NSLog(@"frame: %@", NSStringFromCGRect(self.alertView.frame));
  NSLog(@"bounds: %@", NSStringFromCGRect(self.alertView.bounds));

我注意到框架和边界的宽度和高度是不同的。这怎么可能?

1 个答案:

答案 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类旨在按原样使用,不支持子类化。此类的视图层次结构是私有的,不得修改。

这是一个很好的说法:这里是龙!