Bạn có thể sử dụng phương pháp willAnimateRotationToInterfaceOrientation:duration:
trên UIViewController bạn và sau đó đặt lại vị trí bất kỳ UIViews (hoặc bất kỳ mã khác) cho ngang hoặc dọc. Ví dụ.
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
// change positions etc of any UIViews for Landscape
} else {
// change position etc for Portait
}
// forward the rotation to any child view controllers if required
[self.rootViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}
không chắc chắn nếu câu hỏi vẫn còn thực tế, nhưng bạn có thể sử dụng phương pháp objc để thêm mã của riêng bạn vào mã 'UIViewController'. Điều này sẽ giống như trao đổi '-didRotateFromInterfaceOrientation:' với việc thực hiện của riêng bạn trong đó có một cuộc gọi đến phương thức xử lý của bạn đã thay đổi hướng và một cuộc gọi đến thực hiện ban đầu – medvedNick
@medvedNick Điều đó có vẻ hợp lý. Tôi có thể gọi cho đại biểu của tôi sau đó gọi thực hiện ban đầu. Tôi có thể hơi lo lắng về những tác dụng phụ tiềm ẩn. –