【问题标题】:Error while resizing the subviews调整子视图大小时出错
【发布时间】:2015-08-17 09:45:57
【问题描述】:

我在视图控制器的主视图中有 2 个视图,方式如下:

我的要求很简单,我想根据某些条件调整view2的大小以占据完整的视图。目前,我不关心这种情况,只是想在我的viewDidLoad 中调整 view2 的大小。这是我正在使用的代码。

    CGRect newFrame = self.view2.frame;
    [self.view2 removeFromSuperview];
    [self.view1 removeFromSuperview];                
    newFrame.size.width =703;// width of main view
    newFrame.size.height =632;// height of main view
    newFrame.origin.x=0;
    newFrame.origin.y=0;
    [self.view2 setFrame:newFrame];       
    [self.view addSubview:self.view2];

在上面的代码中,view 是视图控制器主视图的出口。 view2 是我的 view2 的出口,view1 是上面照片中 view1 的出口。我的 view1 的背景颜色为黑色,view2 的背景颜色为红色。该应用程序在没有上述调整大小的代码的情况下工作正常,但是当我运行上述调整大小的代码时,我得到一个空屏幕。

请有人帮我找出我的错误。

提前致谢!

【问题讨论】:

    标签: ios uiview


    【解决方案1】:

    您不应该尝试在 viewDidLoad() 中设置任何子视图的框架。您将无法获得在 viewDidLoad() 中从情节提要中设置的正确帧大小。在 viewDidLoad() 中尝试 NSLog(NSStringFromCGRect(self.view1.frame)。在viewDidLayoutSubviews()中修改子视图框架的正确位置。

    在 viewDidLayoutSubviews 中试试这个:

    CGRect newFrame = view2.frame
    NSLog(NSStringFromCGRect(newFrame))
    newFrame.origin.x = CGFloat(0.0)
    newFrame.origin.y = CGFloat(0.0)
    newFrame.size.width = CGFloat(703.0)
    newFrame.size.height = CGFloat(632.0)
    view2.frame = newFrame
    NSLog(NSStringFromCGRect(newFrame))
    

    【讨论】:

    • 结果还是空屏。没有变化。
    • 我的帧值是正确的。我的猜测是将视图添加回超级视图时存在问题。
    • 哦,但是你为什么要从 superView 中删除它们只是为了改变视图框架?
    • 是的,如果我不先将其从 superview 中删除,则不会发生任何更改。
    • 上面的代码即使不从superView中删除也可以工作
    【解决方案2】:

    也许,不需要从主视图中删除视图。如果你想调整视图的大小,只需尝试这样,而不是最重要的代码。

    -(void)viewDidLayoutSubviews{
         self.view2.frame = CGRectMake(0, 0, 320, 400);
    }
    

    编辑:

    使用上述方法中的代码代替 viewDidLoad。

    【讨论】:

    • 不从超级视图中删除视图根本没有任何改变。它正在加载故事板中的内容。
    • 无需删除视图。试试我编辑的代码。它对我来说很好。如果不是。只需发布您的最新代码。
    • 我尝试了您给我的完全相同的代码。 self.view2.frame = CGRectMake(0, 0, 703, 632); 在我的 viewDidLayoutSubviews 内。但是,它正在从情节提要中加载内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 2013-04-12
    • 2012-08-28
    相关资源
    最近更新 更多