2011-05-02 35 views
12

Làm thế nào tôi có thể lập trình được chiều cao mặc định của một cá thể UIPickerView, theo độ phân giải và hướng của thiết bị mà ứng dụng hiện đang chạy?Mặc định UIPickerView height

Tôi không muốn sử dụng giá trị mã hóa cho tham số này, trong trường hợp thiết bị mới sẽ hỗ trợ độ phân giải màn hình khác nhau và do đó sẽ xác định thành phần này có kích thước mặc định khác.

+0

Bạn có thể sử dụng các tài sản trên UIPickerView – killianke

Trả lời

1

Nếu bạn tạo một thể hiện có chiều cao bằng 0, nó sẽ bị ghi đè với chiều cao mặc định thích hợp và bạn chỉ có thể nhận được frame.size.height của nó.

Tuy nhiên, trên iPad, điều này sẽ đưa ra cảnh báo (được kiểm tra cách đây vài ngày). Cuối cùng tôi đã phải sử dụng các giá trị mã hóa cứng cho iPad ...

P.S. Đây là một UIDatePicker; không chắc chắn nếu đó là điều tương tự chính xác cho UIPickerView.

+0

intrinsicContentSize.height Có cách nào có thể là không phát hành cảnh báo? Nó có vẻ khá hacky để nghỉ mát đến một hệ thống cưỡng chế để thêm một thành phần được khuyến khích để có một kích thước mặc định. – luvieere

+0

Chỉ để làm rõ, "cảnh báo" này tôi đã đề cập chỉ đơn giản là một thông điệp mà hệ thống in ra bàn điều khiển. Cảnh báo này bao gồm chiều cao mặc định được đề xuất, là giá trị hardcoded mà tôi đã kết thúc cài đặt trên mã của mình. Nếu bạn làm điều đó, bạn không nhận được bất kỳ cảnh báo nào. Một như tôi đã nói, nếu bạn đặt mặc định là 0 (và sau đó đọc giá trị được thiết lập bởi hệ thống), bạn sẽ không nhận được những cảnh báo trên iPhone/iPod, nó chỉ trên iPad. –

+0

Tôi cũng nhận được thông báo cảnh báo trên iPhone, trên iOS 4.2, thông báo với tôi rằng kích thước của điều khiển đã được mặc định theo kích thước phù hợp. – luvieere

-1

Bạn có thể sử dụng thuộc tính khung của uipickerview.

15

Cảnh báo mà André thấy dường như không còn xảy ra nữa (XCode 4.2; iOS SDK 5.0). Nếu bạn tạo ra nó với initWithFrame và cung cấp cho nó một chiều cao của số không, sau đó bạn có thể đọc lại nó chiều cao từ frame.height tài sản:

uiPickerView = [[UIPickerView alloc] initWithFrame:CGRectMake(0, 77, 320, 0)]; 
DLog(@"uiPickerView=%@",uiPickerView); 

cho:

uiPickerView=<UIPickerView: 0x9a28c40; frame = (0 77; 320 216); layer = <CALayer: 0x9a28d00>> 

Vì vậy, 216 là chiều cao mặc định.

Tôi không thể tìm thấy định nghĩa cho tiêu đề này trong tiêu đề, vì vậy đọc lại có vẻ là cách an toàn nhất.

Có thể đặt khung có chiều cao khác 0, nhưng Apple nói không làm điều đó và dường như gây ra sự cố hiển thị.

+0

trên iPhone ở chế độ dọc, 216 vẫn chính xác (như iOS 10 và iPhone 7). Tuy nhiên, trong cảnh quan, nó là 162 khi tôi in khung. – user1687195

0

Với bố cục tự động, tôi đã tự hỏi tương tự do thực tế là bạn không thể ghim vào đáy của nó.

Chiều cao mặc định không cần thay đổi một UIPickerView là 216px** UIPickerView**