开发者

Always center UIView

开发者 https://www.devze.com 2023-01-03 18:00 出处:网络
I have a small UIView that should appear always in the center of the screen. This works great for portrait mode but does not in landscape.

I have a small UIView that should appear always in the center of the screen. This works great for portrait mode but does not in landscape.

To draw the UIView I use:

myView.frame = CGRectMake((visibleArea.size.width - MY_VIEW_WIDTH) / 2, (visibleArea.size.height - MY_VIEW_HEIGHT) / 2, MY_VIEW_WIDTH, MY_VIEW_HEIGHT);
myView.autoresizingMask = (
                            UIViewAutoresizingFlexibleTopMargin |
                            UIViewAutoresizingFlexibleBottomMargin |
          开发者_C百科                  UIViewAutoresizingFlexibleLeftMargin |
                            UIViewAutoresizingFlexibleRightMargin
                           );

Any ideas what might be missing?


Why not try

myView.center = controller.view.center


Is the app auto rotating?

I mean, what does your -[UIViewController shouldAutorotateToInterfaceOrientation:] method looks like? Do you have an initial and supported orientations in your Info.plist file?

Check also parent's view autoresizesSubviews property.


Maybe you don't change the orientation of the status bar. If you don't do this, the device thinks that the orientation still portrait, not landscape.


I created a property to give me the bounds, based on the orientation of the device. (This is in a category on UIScreen.)

- (CGRect)boundsWithRespectToOrientation
{
    CGRect bounds = self.bounds;

    if (UIInterfaceOrientationIsLandscape([[UIApplication sharedApplication] statusBarOrientation]) && bounds.size.height > bounds.size.width)
        bounds = CGRectMake(bounds.origin.x, bounds.origin.y, bounds.size.height, bounds.size.width);
    else if (UIInterfaceOrientationIsPortrait([[UIApplication sharedApplication] statusBarOrientation]) && bounds.size.width > bounds.size.height)
        bounds = CGRectMake(bounds.origin.x, bounds.origin.y, bounds.size.height, bounds.size.width);

    return bounds;
}
0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号