添加子视图以查看更改其他子视图'帧

时间:2014-03-26 17:35:49

标签: ios objective-c ios7 uiview addsubview

uiviewcontroller在stroyboard ib中添加了两个UIViews和一个tableview并与IBoutlet

相关联

当用户在顶部uiview中单击滑动时,我调用以下方法来更改所有子视图IBoutlet元素的帧。这很有效。

-(void)hideTopViews
{
    [UIView animateWithDuration:0.25 animations:^{
        [_overallHealth setHidden:YES];
        _overallHealth.frame =  CGRectMake(0, 0,self.view.frame.size.width,0);
        [_healthBar setHidden:YES];
        _sortView.frame =  CGRectMake(0, 45,self.view.frame.size.width,_sortView.frame.size.height);
        _portfoList.frame =  CGRectMake(0, _sortView.frame.origin.x+_sortView.bounds.size.height+50,self.view.frame.size.width,self.view.frame.size.height);
        _sortButton.frame =  CGRectMake(90, 45,_sortButton.frame.size.width,_sortButton.frame.size.height);
        [self.view bringSubviewToFront:_sortButton];
        self.navigationItem.leftBarButtonItems=nil;
    }];


}

然而,当我以编程方式向self.view添加另一个子视图时,所有子视图都会回到故事板中的原始位置。

-(void)showPortfolioDetailsScreen
{
    PortfolioDetails *portView=[[PortfolioDetails alloc] initWithFrame:CGRectMake(300,200,200,200)];
    portView.backgroundColor=[UIColor redColor];
    [self.view addSubview:portView];

}

enter image description here

enter image description here

enter image description here

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

@tanzolone是正确的,如果你只使用肖像模式并希望你的故事板停止更改你的子视图到原始框架转到你的故事板并取消选中Use Autolayout

所以你可以使用旧的struts-and-springs模型。

这里是自动布局的详细教程 http://www.raywenderlich.com/20881/beginning-auto-layout-part-1-of-2