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

时间:2012-12-06 03:48:51

标签: ios xcode uiview uiviewcontroller containers

我有一个容器视图@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;
}

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

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:3)

视图的“frame”属性用于布局。如果您在故事板中布置了容器视图,并想在代码中移动它。尝试“转换”属性。例如,“self.containerView.transform = CGAffineTransformTranslate(self.containerView.transform,0.0,10.0);” =>向上移动容器视图10点:)