UIView height is not right on iPhone 5

后端 未结 4 1562
别那么骄傲
别那么骄傲 2020-12-28 08:34

I am migrating my apps over and on one I use a UIPickerView. In the viewDidLoad method I create the picker and set it\'s y origin to be self.view.frame.si

相关标签:
4条回答
  • 2020-12-28 09:15

    That is because the size you selected in the view's nib will be used until viewWillAppear: (BOOL) animated method. Then it will take the correct size.

    However you can use the following code to have the correct size since viewDidLoad is called:

    CGSize viewSize = [[UIScreen mainScreen] bounds].size;
    viewSize = CGSizeMake(viewSize.width, viewSize.height - STATUS_BAR_HEIGHT);
    

    STATUS_BAR_HEIGHT is 20 but it depends on your app. You may or may not need to add that line.

    EDIT

    The problem with using mainScreen bounds is that the frame doesn't change on orientation change. That is the way it is designed. You can work it out with the following:

        CGSize viewSize = [[UIScreen mainScreen] bounds].size;
    
        if(UIInterfaceOrientationIsLandscape(CURRENT_ORIENTATION)){
            viewSize = CGSizeMake(viewSize.height, viewSize.width - STATUS_BAR_HEIGHT);
    
        } else {
            viewSize = CGSizeMake(viewSize.width, viewSize.height - STATUS_BAR_HEIGHT);
        }
    

    CURRENT_ORIENTATION is [[UIApplication sharedApplication] statusBarOrientation];

    0 讨论(0)
  • 2020-12-28 09:22

    I found the issue. My nib has to be set to "iPhone 5 full screen" (I think that's what it's called). I guess that it loads the view size from the nib and doesn't take into account autoResizeMask.

    When the view size in IB is set to "Size: None" the view is not sized right. It has to be set to "Size: Retina 4 Full Screen". Strange.

    0 讨论(0)
  • 2020-12-28 09:30

    I've been dealing with the same issue. I tried getting the views frame in - (void)viewDidLoad but discovered that it's not updated until - (void)viewWillAppear:(BOOL)animated gets called.

    So try getting the views frame in - (void)viewWillAppear:(BOOL)animated and you should be alright.

    0 讨论(0)
  • 2020-12-28 09:30

    It looks like iOS detects the app is designed for use on iPhone 5 after detecting a Default-568h@2x.png image in your bundle. How to develop or migrate apps for iPhone 5 screen resolution? has a complete answer outlining the entire process.

    0 讨论(0)
提交回复
热议问题