问题
I'm trying to get the size of my UIView
after the orientation changes. In my view controller I implement didRotateFromInterfaceOrientation:
and call setNeedsLayout:
on my view. In my view's layoutSubviews
method, it tries to perform some logic based on its new frame size post rotation, but the frame size has not been updated to reflect the new orientation (e.g. it is still 768x1024 instead of 1024x768 after moving to landscape).
How do I get the updated frame size?
回答1:
Just going to answer with what Luis Oscar said so that the question shows up as answered. The solution is to access the "bounds" property rather than "frame".
回答2:
Please try this method.This method will call automatically at the time of rotation.Hope this may help you. Thanks.
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (UIInterfaceOrientationIsPortrait(toInterfaceOrientation)) {
NSLog(@"%f,%f",self.view.frame.size.width,self.view.frame.size.height);
} else if (UIInterfaceOrientationIsLandscape(toInterfaceOrientation)) {
NSLog(@"%f,%f",self.view.frame.size.width,self.view.frame.size.height);
}
}
来源:https://stackoverflow.com/questions/11150495/ios-uiview-get-frame-after-rotation