我有一个主视图和一个嵌套在主视图中的view1,如何调整view1的大小?
以下代码无效:
self.View1.bounds.size.height = self.view.bounds.size.height;
我有一个主视图和一个嵌套在主视图中的view1,如何调整view1的大小?
以下代码无效:
self.View1.bounds.size.height = self.view.bounds.size.height;
CGRect frame = self.View1.frame;
frame.size.height = self.view.bounds.size.height;
self.View1.frame = frame;
您不能直接修改边界。需要在视图的范围之外修改CGRect。
CGRect viewBounds = self.view1.bounds;
viewBounds.size.height = self.view.bounds.size.height;
self.view1.bounds = viewBounds;
我没有足够的声望来对其他答案添加简单评论,所以我将帮助指出一些重要的点:
(1) 如果只是改变大小,请设置新的bounds
而不是frame
如果你只是想调整图像的大小(但保持图像在同一位置),那么请按照cdownie的建议设置新的bounds
而不是新的frame
。例如,如果你有一个指针手的图像,并想让它看起来像在点击屏幕,那么快速缩小和放大bounds
的大小将实现这个效果,并且如果你在图像中心设置锚点,它将保持相同的屏幕位置。如果像Tony Friz建议的那样更改了frame
,那么在图像大小缩小时,图像将拉到其左上角(除非你使用额外的数学方法进行修正)。
(2) 如果在nib或storyboard中创建图像,请关闭自动布局和自动调整大小
Autolayout需要在移动或调整图像大小的任何视图上关闭。如果保留它,行为将会是奇怪和不可预测的。同时,在关闭Autolayout后,进入图像的大小检查器并设置正确的原点(例如中心),通过点击自动调整网格中的任何实线直到所有实线变成虚线来禁用所有自动调整约束。这样,您就可以通过更改“center”属性来完全控制图像位置,并通过设置新的“bounds”来调整大小。[self.View1 setFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.x, self.view.frame.size.height, self.view.frame.size.height)];