2011-01-06 18 views
30

Xin chào, tôi muốn có chiều rộng và chiều cao của chế độ xem chính. Tôi muốn có giá trị chính xác ở chế độ ngang hoặc dọc. Tôi đã thử các cách sau:Iphone: Xem kích thước hoặc kích thước màn hình hiện tại


    NSLog(@"aaa %f", [UIScreen mainScreen].applicationFrame.size.width); 
    NSLog(@"zzz %f", self.view.frame.size.width); 

Chúng cung cấp 300 chế độ ngang và 320 ở chế độ dọc, có lớn hơn ở chế độ dọc. Vì vậy .. xem của tôi chiếm toàn bộ màn hình (- thanh trạng thái) vì vậy tôi mong đợi 480 ở chế độ ngang và 320 ở chế độ dọc. Điều gì đã xảy ra với phần còn lại của pixel. Tôi có phải hardcode các giá trị này? Cảm ơn.

Trả lời

91

Một trong các dòng sau có phù hợp với bạn không?

[[UIScreen mainScreen] bounds].size.height 
[[UIScreen mainScreen] bounds].size.width 

Tôi cho rằng bạn có thể trừ chiều cao của thanh trạng thái? Có lẽ tôi không hiểu câu hỏi của bạn

+1

Công trình này trả về cùng chiều rộng và chiều cao cho cả hai hướng nhưng ít nhất nó hoạt động. Và có, tôi cần phải trừ thanh trạng thái. –

+0

@Omar bạn cần thêm '[' trước màn hình UIScreen. –

+0

Hmm, tôi đoán BrianV đã chỉnh sửa nó để sửa chữa nó (khi bạn nói 'chỉnh sửa nó', nó nghe có vẻ như nói lắp; p). Cảm ơn, tôi phải đã bỏ lỡ nó. – Omar

9

Hãy thử điều này:

UIWindow* window = [UIApplication sharedApplication].keyWindow; 
NSLog(@"%f",window.frame.size.width); 
+0

này cũng làm việc. Điều này cũng bao gồm chiều cao thanh trạng thái. Nó là như nhau cho tất cả các phép quay. Cảm ơn. –

+0

nhờ công việc tuyệt vời nếu bạn cần hỗ trợ màn hình 3,5 và 4,0 inch –

-4

Tôi nghĩ rằng tốt nhất là sử dụng:

CGRect frame = [[UIScreen mainScreen] frameForOrientation:self.interfaceOrientation]; 

Giả sử tự trong ví dụ trên là một UIViewController. Trong mọi trường hợp, phương thức frameForOrientation mong đợi một kiểu UIInterfaceOrientation.

+5

Uh .. Tôi không có phương pháp nào cho 'UIScreen' .. tôi có cần thứ gì khác không? –

+2

phương pháp không tồn tại đối với tôi. – cyrilchampier

5

macro hữu ích mà sẽ cung cấp cho bạn kích thước chính xác dựa trên các hướng thiết bị:

#define SCREEN_WIDTH ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.width : [[UIScreen mainScreen] bounds].size.height) 
#define SCREEN_HEIGHT ((([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortrait) || ([UIApplication sharedApplication].statusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)) ? [[UIScreen mainScreen] bounds].size.height : [[UIScreen mainScreen] bounds].size.width) 
+0

hoạt động giống như nét duyên dáng :) – Swati

+0

điều này hữu ích – Jordan