如何以编程方式更改视图大小?
Posted
技术标签:
【中文标题】如何以编程方式更改视图大小?【英文标题】:How to change View size programmatically? 【发布时间】:2014-05-08 08:16:38 【问题描述】:*** 中关于这个主题的问题很少。但是没有一个解决方案对我有用。
当用户单击表格视图的行时,我需要显示弹出窗口。同样,此弹出窗口应包含tableView
。由于 Apple 建议不在 alertView 中使用tableView
,因此,我需要使用尺寸较小的普通UIView
。
UIView
是使用storyboard
绘制的。
以编程方式,我正在尝试使用以下代码来减小大小。
- (void)viewDidLoad
[super viewDidLoad];
CGRect newFrame = self.view.frame;
newFrame.size.width = 200;
newFrame.size.height = 200;
[self.view setFrame:newFrame];
但它不起作用。
【问题讨论】:
【参考方案1】:CGRect 不仅是宽度和高度,它也是 x 和 y。 这样做:
CGRect newFrame = CGRectMake( self.view.frame.origin.x, self.view.frame.origin.y, 200, 200);
self.view.frame = newFrame;
这只会影响宽度和高度。
【讨论】:
结构 CGRect 中没有成员 'x' 或 'y'。而self.view.frame.size.height = self.view.frame.width = 200;不是可赋值的表达式。 感谢@Audumbar,我删除了第二种方法,因为它在 Objective-C 中是不可能的。 @BenjaminHerzog 我注意到这仅在我将其添加到 ViewDidAppear 时才对我有效。有没有办法在它出现之前更改我的框架我在 ViewDidLoad 和 ViewWillAppear 中尝试过但没有工作。 @LianvanderVyver 也应该在 viewDidLoad 中工作。也许之后会改变?【参考方案2】:您尝试修改的视图可能是通过情节提要附加到UIViewController
的视图,您将无法修改该视图,请尝试使用情节提要或以编程方式创建另一个视图。
【讨论】:
【参考方案3】:由于您的要求是显示一个弹出窗口,我建议您如果它的 iPAD 则继续使用 UIPopoverController 如果它的 iPhone 则只需创建一个新的全屏具有透明背景(清晰背景)的 UIView,然后再创建一个具有新框架的 UIView,并确保框架大小在中间并附加它(添加子视图)。
您正在执行的程序也不起作用。创建一个新的 UIView 并更改框架,然后将 subView 附加或添加到您的主视图
这将解决您的问题。
【讨论】:
【参考方案4】:我认为您正在寻找带有 tableView 的 UIPopOverController..
参考本教程
http://www.raywenderlich.com/29472/ipad-for-iphone-developers-101-in-ios-6-uipopovercontroller-tutorial
【讨论】:
以上是关于如何以编程方式更改视图大小?的主要内容,如果未能解决你的问题,请参考以下文章