My self.view has the wrong dimensions

2019-04-23 18:20发布

问题:

My view has the wrong dimensions. I am running a Landscape only but the view is reporting portrait dimensions "View Width = 768.000000 Height = 1024.000000" Any Ideas how to fix that? I have played around with the autorotate I have tried

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft|| interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

and

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    return YES;
}

It looks fine on the view but have the dimensions are really messing with my app.

回答1:

You should never use frame to tell your own dimension. frame is relative to the parent container view. To find the dimension with respect to your view's own coordinate system, use bounds: self.view.bounds

For example, the parent view may see the child view having width = 768 and height = 1024, but with a rotate 90 degree transform. This is how the parent view sees the child view, and this is what self.view.frame is about. The child view having a width = 1024 and height = 768 is reflected by how a view sees itself in its own coordinate system, which is self.view.bounds