2010-08-29 28 views
6

Tôi sẽ làm cách nào để tải một xib mới khi thay đổi hướng của thiết bị? tức là tải xib được định hướng ngang khi thiết bị được chuyển thành hướng ngang và ngược lại với hình chân dung. và làm thế nào tôi sẽ tự động phát hiện một sự thay đổi định hướng và điều chỉnh từ đó?Làm thế nào tôi sẽ tải một xib khi định hướng thiết bị được thay đổi trong xcode?

Trả lời

7

rõ ràng tất cả tôi phải làm là tạo ra một cái nhìn dựa ứng dụng lần lượt shouldAutoRotateToInterfaceOrientaion YES, và tạo ra hai lớp con UIViewController với các file xib cá nhân, sau đó thêm video này vào bộ điều khiển xem ứng dụng:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications]; 
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged) name:UIDeviceOrientationDidChangeNotification object:nil]; 

và thêm này vào bộ điều khiển chế độ xem ứng dụng:

-(void)orientationChanged { 
    UIDeviceOrientation orientation = [UIDevice currentDevice].orientation; 
    if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown) { 
     [[NSBundle mainBundle] loadNibNamed:@"Portrait" owner:self options:nil]; 
    } 
    else { 
     [[NSBundle mainBundle] loadNibNamed:@"Landscape" owner:self options:nil]; 
    } 

} 

và khi thiết bị được xoay tự động tải xib theo đúng hướng.

chỉnh sửa: bạn cũng cần phải thêm hai trình điều khiển xem theo chương trình (@property và @synthesize chúng), và hai chế độ xem trong appviewcontroller.xib trong IB mỗi tên lớp tương ứng với lớp con viewcontroller của từng xib bạn đã tạo. sau đó thêm một khung nhìn kết nối nó với chủ sở hữu của tập tin và kết nối các cửa hàng trong IB với các bộ điều khiển xem bạn đã tạo trong ib và phải là tất cả

+0

hoạt động tốt cho iPhone. iPad cần các bước bổ sung: #define DegreesToRadians (x) ((x) * M_PI/180.0); (self.view.transform = CGAffineTransformMakeRotation (DegreesToRadians (180)) Ít nhất trong trường hợp của tôi – TrekOnTV2017

+0

+1 Làm việc cho tôi .. Cảm ơn .. :) – HDdeveloper

Các vấn đề liên quan