UIView作为子视图方向框架问题

时间:2016-04-04 08:49:49

标签: ios objective-c uiview

我已将UIView作为View Controller中的子视图

@property(nonatomic,retain) IBOutlet UIView *subview;

然后我在这个子视图中添加自定义UIView类,

- (void)showdetail
{
    CGRect frameToset = CGRectMake(0, 0, self.subview.frame.size.width,self.subview.frame.size.height) ;

    customUIViewPaging *demoView = [[customUIViewPaging alloc] initWithFrame:frameToset];

     ... // so on
    [self.subview addSubview:demoView];

}

在纵向模式下,它可以很好地工作,但在风景中,我正在更新这样的框架,

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
     [self showdetail];
} 

然后它在风景和肖像完美地工作之后然后我从这个视图中推动另一个视图并且在返回到此视图后美化推送视图然后框架尺寸不完美(子视图框架在返回时不更新框架从另一个角度来看)

我试图放needsUpdateConstraints,但似乎无法正常工作

[self.subview needsUpdateConstraints];

Check this example

See this

1 个答案:

答案 0 :(得分:1)

我不会进入Autolayout方向,因为您想要在查看时显示正确的框架...如果您想要正确的宽度而不是调用它-(void)viewDidLayoutSubviews{..}

  -(void)viewDidLayoutSubviews{ 
       NSLog(@"%f",self.subview.frame.size.width); //here you get correct width
  }  

现在另一个问题是,每当屏幕旋转或此方法调用时,您都会添加子视图..所以最好通过删除以前的视图来阻止...