Reputation: 1034
Here's the situation.
I have an UIScrollView that uses autolayout that successfully adjust to the screen when I rotate it, my problem comes with the scrollView's content that doesn't adjust.
The scrollView is the red part.
Here's my code:
-(void)preparePromotions
{
CGRect frameViewPromotions = [self getPossibleFrame];
frameViewPromotions.origin.x = 10.0f;
frameViewPromotions.origin.y = 10.0f;
if (!_promotionsViewController)
{
_promotionsViewController = [[PromotionsViewController alloc] init];
}
_promotionsViewController.view.frame = frameViewPromotions;
_promotionsViewController.margin = 2.0f;
_promotionsViewController.diameterPageController = 10.0f;
_promotionsViewController.marginPageController = 15.0f;
_promotionsViewController.frameContentView = frameViewPromotions;
[self addChildViewController:_promotionsViewController];
_promotionsViewController.view.translatesAutoresizingMaskIntoConstraints = NO;
[self.view addSubview:_promotionsViewController.view];
[self createCosntraintWithView:_promotionsViewController.view];
}
-(void)createCosntraintWithView:(UIView *)subview
{
NSDictionary *views = NSDictionaryOfVariableBindings(subview);
[self.view addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-10-[subview]-10-|"
options:0
metrics:nil
views:views]];
[self.view addConstraints:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-40-[subview]-50-|"
options:0
metrics:nil
views:views]];
}
Upvotes: 1
Views: 742
Reputation: 1927
The scrollView's content doesn't adjust, because you're using frames there, instead of AutoLayout. If you rewrite your frames to AutoLayout constraints, it'll adjust when you rotate it. Always try to avoid mixing AutoLayout and frames, as you can get unpredictable results.
Upvotes: 1