Sử dụng Xcode 4.2.1 iPad iOS 5.0.1, tạo dự án iPad "Single View" mới. Trong bộ điều khiển, thêm:Sau khi xoay tọa độ UIView được đổi chỗ nhưng UIWindow không được?
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
- (void) dumpView: (UIView *) view {
CGRect frame = view.frame ;
CGRect bounds = view.bounds ;
CGPoint center = view.center ;
NSLog(@"view [%@]:%d frame=%@ bounds=%@ center=%@"
, NSStringFromClass(view.class)
, [view hash]
, NSStringFromCGRect(frame)
, NSStringFromCGRect(bounds)
, NSStringFromCGPoint(center)) ;
}
- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation) fromInterfaceOrientation {
NSLog(@"INViewController.didRotateFromInterfaceOrientation: %d to %d", fromInterfaceOrientation, self.interfaceOrientation) ;
[self dumpView: self.view] ;
[self dumpView: self.view.superview] ;
}
Chạy nó, hãy xoay điện thoại và bạn sẽ nhận được:
INViewController.didRotateFromInterfaceOrientation: 2 to 4
view [UIView] bounds={{0, 0}, {1024, 748}} center={394, 512}
view [UIWindow] bounds={{0, 0}, {768, 1024}} center={384, 512}
Nói cách khác, các UIView có tọa độ của nó "hoán đổi để cảnh quan" như mong đợi, nhưng nó mẹ UIWindow vẫn tuyên bố là trong chế độ chân dung ...
Ngoài ra, kích thước UIView có vẻ là hơi sai: tọa độ y mà nên ở mức 20 là 0 ...
Bất cứ ai biết wh điều này có nghĩa là gì?
Làm cho tinh thần. Cảm ơn bạn. Ngẫu nhiên, cảm ơn bạn vì đã chỉ cho tôi rằng gdb có thể thực sự được sử dụng tương tác :-) – verec
@rob Ngoại trừ các tài liệu ref cho UIView.frame nói: Cảnh báo Nếu thuộc tính biến đổi không phải là biến đổi nhận dạng, giá trị của thuộc tính này là không xác định và do đó nên bỏ qua. Bạn có thể giải thích về điều đó không? Giả sử tôi muốn tạo hiệu ứng cho khung của chế độ xem được xoay để trượt nó thành lớp phủ. – tribalvibes
Tôi không dựa vào 'khung' trong mã của mình khi' biến đổi' không phải là danh tính. Tuy nhiên, phương thức 'frame' xuất hiện để luôn trả về' [self convertRect: self.bounds toView: self.superview] 'và vì vậy nó rất hữu ích khi gỡ lỗi. –