在Storyboard中创建的容器视图不会以编程方式更改框架

Pat*_*eux 4 xcode containers uiviewcontroller uiview ios

我有一个容器视图,@property (weak, nonatomic) IBOutlet UIView *containerView;但是当我设置它的框架时它不会移动.以下是我的尝试方式:

- (void)setFramesForCategories
{
    CGRect frame = _containerView.frame;
    frame.origin.x = 20;
    frame.origin.y = self.view.frame.size.height - 52;
    frame.size.width = 236;
    frame.size.height = 60 * [[_dataDict objectForKey:@"Key"] count];
    _containerView.frame = frame;
}
Run Code Online (Sandbox Code Playgroud)

我知道这是基本的,它之前对我有用,当我以编程方式创建对象时,但它现在对我不起作用.

Pat*_*eux 13

我遇到的问题是在Storyboard中设置的约束覆盖了框架更改.这解释了为什么我没有编程添加对象的相同问题.我必须做的就是关闭项目的约束条件是转到Storyboard.storyboard文件,然后确保"Utilities"侧栏已打开并选择"File Inspector"选项卡.然后我在"Interface Builder Document"下滚动并取消选择"Use Autolayout".在此之后,我重新启动项目以找到以编程方式设置框架的工作.

  • 为什么需要关闭自动布局?为什么不通过代码更改自动布局约束,然后尝试上面的帧更改? (4认同)
  • Autolayout虽然在某些情况下提供了支持多个设备的良好解决方案,但对于大多数项目来说通常都很糟糕.关掉它不要感觉不好,不只是你在做那件事. (2认同)