2014-09-28 19 views
14

Tôi đang cố gắng xây dựng một phiên bản ứng dụng của mình dành riêng cho iPhone 6 và 6 Plus, trong khi tôi không có bất kỳ phần cứng nào, tôi phải thử nghiệm trên trình mô phỏng! nhưng có vẻ như, giả lập có lỗi lạ! đầu tiên và đối với hầu hết tôi nhận được độ phân giải màn hình và quy mô, bởi mã này:Có vấn đề với phát hiện iPhone 6/Plus trên giả lập

UIScreen *mainScreen = [UIScreen mainScreen]; 
NSLog(@"Screen bounds: %@, Screen resolution: %@, scale: %f, nativeScale: %f", 
     NSStringFromCGRect(mainScreen.bounds), mainScreen.coordinateSpace, mainScreen.scale, mainScreen.nativeScale); 

vì vậy đây là cách phát hiện iPhone 6 và 6Plus (chế độ Portrait):

#define iPhone6 ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 667) 

#define iPhone6Plus ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && [UIScreen mainScreen].bounds.size.height == 736) 

vấn đề là! khi tôi ăn trưa ứng dụng của tôi trên iPhone6 ​​/ Plus mô phỏng, trình biên dịch cung cấp cho tôi những thông tin sceen của iPhone 4" display:!

2014-09-28 12:32:08.153 WOD[2924:42290] 
Screen bounds: {{0, 0}, {320, 568}}, Screen resolution: <UIScreen: 0x7fa15be0f9b0; bounds = {{0, 0}, {320, 568}}; mode = <UIScreenMode: 0x7fa15bd0d4a0; 
size = 640.000000 x 1136.000000>>, scale: 2.000000, nativeScale: 2.000000 

Nhưng nó hoạt động tốt trên dự án mới (Tôi không thể tạo ra một dự án mới và bắt đầu lại một lần nữa!) Tôi cleaned code, delete build folder, change project's name và đặt lại Simulator contents setting nhưng vẫn cung cấp cho tôi thông tin về màn hình 4 "! .

Tôi đã kiểm tra điều này Q/A nhưng câu trả lời yêu cầu thiết bị thực!

+0

bạn đã tạo dự án này ở xcode 5 và mở trong 6 ... phải không? –

+0

@FahimParkar Vâng, tôi đã làm! –

+2

Bạn đã thử thêm màn hình khởi chạy chưa? Ngay cả MainStoryboard cũng tốt. – Phillip

Trả lời

21

Lý do chính tôi phải đối mặt với vấn đề này là tôi xây dựng ứng dụng của tôi với Xcode 5 và mở nó với Xcode 6

Giải pháp:

Thêm Launch hình ảnh cho Retina HD 5.5 và 4.7:

enter image description here

Bây giờ bạn có thể phát hiện iPhone 6/Plus trên trình mô phỏng mà không cần có thiết bị thực:

#define iPhone6 ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && MAX([UIScreen mainScreen].bounds.size.height,[UIScreen mainScreen].bounds.size.width) == 667) 
#define iPhone6Plus ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && MAX([UIScreen mainScreen].bounds.size.height,[UIScreen mainScreen].bounds.size.width) == 736) 
+0

Anh ấy đã xảy ra khi iPhone 5 đến ... đây là giải pháp duy nhất ... NHƯNG tôi quên rằng: D :) –

+0

Bạn cần thêm hình ảnh với kích thước RIGHT, hoặc bạn phải sử dụng Launch Screen http: // stackoverflow. com/questions/25754942/how-to-enable-native-resolution-cho-apps-on-iphone-6-and-plus – onmyway133

2

Chỉ trong trường hợp bạn cần phát hiện iPhone 6/6Plus ở chế độ ngang, hãy sử dụng tính năng này.

#define iPhone6 ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && MAX([UIScreen mainScreen].bounds.size.height,[UIScreen mainScreen].bounds.size.width) == 667) 
#define iPhone6Plus ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone && MAX([UIScreen mainScreen].bounds.size.height,[UIScreen mainScreen].bounds.size.width) == 736) 
Các vấn đề liên quan