【问题标题】:How to set views frame without auto layout如何在没有自动布局的情况下设置视图框架
【发布时间】:2012-09-24 06:19:38
【问题描述】:

随着 iOS 6 的发布,我更改了我的应用程序故事板以使用新的自动布局功能。

我的问题是我在一个视图控制器中设置了一个 tableview 框架 - 但是当我使用自动布局功能时 table.frame = CGRectMake(..) 代码似乎被忽略了。

如果有 iAd 或没有 iAd,我的应用程序应该更改 tableview 框架。

我不知道我是否可以通过自动布局解决这个问题 - 也许你可以帮助我。

来自德国的问候 :)

【问题讨论】:

  • 这是意料之中的。您应该尝试为您的视图添加一个约束,使其具有正确的大小和位置。
  • 是否有可能改变这个约束?因为我想要使用 View 的方式是:1.)检查用户是否为没有广告付费 2.)如果是,请不要更改 tableview - 如果不是,请降低 tableview 的高度
  • 您可以使用addConstraint:在代码中添加和删除常量
  • 我现在搜索了一段时间,但我没有找到如何动态更改 tableview 的高度:/
  • 你的表视图应该有约束,告诉它的边缘与父视图的边缘或类似的东西保持固定距离。如果您插入 iAd 视图,那么您应该改为更改底部约束以告诉表格视图与 iAd 视图顶部保持固定距离。

标签: iphone objective-c xcode ios6


【解决方案1】:

不要使用自动布局并删除 xib 中的 UIViewAutoresizingFlexibleWidthUIViewAutoresizingFlexibleheight。如果你没有得到它,请告诉我。

并在代码中使用set frame属性。

【讨论】:

  • 这就是问题所在,我必须在其他视图中使用自动布局 - 不幸的是,无法为某些视图关闭自动布局。
  • 我好像误会了什么?我正在使用 xcode 4.5
【解决方案2】:

我知道这已经过时了,但随着迁移到 iOS7,我觉得是时候为我自己的应用程序激活自动布局了。我遇到了这个问题,发现我可以简单地重新打开自动布局并将您的 table.frame = CGRectMake(..) 代码放入:

- (void) viewDidAppear:(BOOL)animated
{
table.frame = CGRectMake(..)
}

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 2018-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多