2010-07-02 10 views
9

Tôi đang cố gắng để có một trong các chế độ xem trẻ em trên màn hình của tôi (được sở hữu bởi một bộ điều khiển chế độ xem) không phải xoay khi thiết bị xoay. Trình điều khiển chế độ xem của tôi cho phép quay theo ý muốn và tôi đang cố gắng áp dụng chế độ xoay 90 độ cho chế độ xem "tĩnh" để chống xoay vòng tổng thể.Đặt chuyển đổi xoay thành UIView hoặc lớp của nó dường như không hoạt động?

Vấn đề là, mọi thứ dường như xoay bất kỳ đường nào và biến đổi dường như không làm gì cả. Tôi đã thử với một biến đổi affine trên khung nhìn, và với một biến đổi 3d trên layer (bên dưới). Phương pháp này được gọi, nhưng tôi không bao giờ thấy sự khác biệt về thị giác.

Mọi suy nghĩ? Cảm ơn.

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration 
{ 
    CALayer *layer = stuckview.layer; 
    layer.transform = CATransform3DMakeRotation(90, 0, 0, 1); 
}  

Trả lời

26

Để giúp những người khác tìm thấy điều này, tôi thêm một vài cụm từ tìm kiếm, như:

ngăn chặn một UIView từ xoay

ngăn chặn một nền UITableView từ xoay

dừng vòng xoay UIView

dừng xoay vòng UITableView


.210

Một mẫu hoàn chỉnh cho bất kỳ định hướng:

- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
    { 
     switch (toInterfaceOrientation) { 
      case UIInterfaceOrientationLandscapeLeft: 
       stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); // 90 degress 
       break; 
      case UIInterfaceOrientationLandscapeRight: 
       stuckview.transform = CGAffineTransformMakeRotation(M_PI + M_PI_2); // 270 degrees 
       break; 
      case UIInterfaceOrientationPortraitUpsideDown: 
       stuckview.transform = CGAffineTransformMakeRotation(M_PI); // 180 degrees 
       break; 
      default: 
       stuckview.transform = CGAffineTransformMakeRotation(0.0); 
       break; 
     } 
    } 
+0

tôi kiểm tra và thấy rằng UIInterfaceOrientationPortraitUpsideDown không stuckview làm việc trong ios 6. –

+0

là một CALayer hoặc một UIView? –

+0

@AdamWaite - UIView, như được chỉ ra bằng tên và mô tả! ;-) – nekno

4

Mã của bạn có thực sự được thực thi không? (Bạn có thực hiện shouldAutorotateToInterfaceOrientation:?)

stuckview.transform = CGAffineTransformMakeRotation(M_PI_2); 

nên thực hiện công việc.

Lưu ý: Các hàm lấy radian chứ không phải độ.