【问题标题】:How to change View size programmatically?如何以编程方式更改视图大小?
【发布时间】:2014-05-08 08:16:38
【问题描述】:

stackoverflow 中关于这个主题的问题很少。但是没有一个解决方案对我有用。

当用户单击表格视图的行时,我需要显示弹出窗口。同样,此弹出窗口应包含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];
}

但它不起作用。

【问题讨论】:

    标签: ios uitableview uiview


    【解决方案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

        【讨论】:

          猜你喜欢
          • 2015-11-07
          • 1970-01-01
          • 2013-09-06
          • 2015-08-10
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-06-16
          • 1970-01-01
          相关资源
          最近更新 更多