缩放子类UIView

时间:2011-08-10 16:05:46

标签: iphone ios cocoa-touch

我已经创建了UIView的子类,并且我试图在其m文件中扩展和移动视图,但遇到了一些问题。当我使用命令时: self.frame = CGRectMake(self.frame.origin.x-10,self.frame.origin.y-10,self.frame.size.width/2,self.frame.size.height/2);对象移动位置但不调整大小(视图只包含一些UIImageViews)。在子类的xib文件中,我检查了剪辑子视图和自动调整子视图的选项,但似乎都没有发生。关于为什么视图不会使用此命令调整大小以及如何调整大小的任何想法。

1 个答案:

答案 0 :(得分:1)

调整视图大小与缩放视图不同。将您的视图视为相框。你上面做的是移动框架,还移动右下角(你缩短框架的木条) - 但这不会自动缩小图片。

使用子视图调整视图大小有四种方法:

  1. 让超级视图剪辑其子视图(通过设置view.clipsToBounds = YES):子视图不会调整大小或重新布局,而只显示在框架内的区域。
  2. 让superview不剪辑其子视图(通过设置view.clipsToBounds = NO):更改超视图大小对子视图没有任何视觉效果,它们也会显示在框架之外。
  3. 给出子视图autoresizingMask s:子视图不会改变大小,但是它们根据自动调整大小进行重新布局(例如,子视图可能总是保留在帧的右下角10 px,或者可能始终精确地跨越框架的宽度。)请注意,这不一定会自动缩放子视图内容。相应地设置subview.contentMode
  4. 缩放超级视图:通过设置superview.transform = CGAffineTransformScale(superview.transform, 0.5, 0.5),您可以缩小超级视图及其所有子视图(基本上缩小)。请注意,这使得superview.frame未定义,这意味着您不应再使用它。它也可以使事情有点模糊。
  5. 您也可以“手动”更改所有子视图,但这样做会破坏具有良好视图层次结构的目的。

    正如MishieMoo所说,暂时将你的超级视图的backgroundColor设置为可见的东西。这很可能会向您显示您的观点确实在变化。