2013-02-13 35 views
5

Tôi đang phát triển một ứng dụng có bố cục tự động tắt và cài đặt mặc định cho Iphone 5. Bây giờ tôi có UIView ở cuối màn hình, khi tôi chuyển đổi giữa các tùy chọn kích thước trong IB, UIView di chuyển chính xác để tự sửa lỗi dưới cùng của màn hình. Tuy nhiên khi tôi kiểm tra trên IPhone 4 của tôi hoặc giả lập nó không di chuyển lên, thay vào đó nó bị cắt.Tôi làm cách nào để sửa UIView ở cuối màn hình?

Làm cách nào để tạo UIView ở dưới cùng của ứng dụng bị tắt ở trên cho iPhone nhỏ hơn 4?

Xem ví dụ sau

tôi về cơ bản muốn hộp trắng được shunted lên để lấp đầy khoảng trống bên dưới hộp màu xám.

Cập nhật

Xét về thứ bậc xem, có một cái nhìn chứa và sau đó là phần trắng mà bạn nhìn thấy là một UIView đơn giản (nền trắng) với một cái nhìn cuộn bên trong. Dự án khá mới nên việc cài đặt rất đơn giản và không có mã để định vị bất kỳ UIViews nào.

+0

Bạn đang sử dụng tính năng AutoLayout? hoặc AutoresizingMask? – Jaybit

+0

Tôi đã tắt tính năng Tự động tắt, tôi đang sử dụng tính năng tự động hóa – ORStudios

+0

@IconicDigital, hình ảnh 4 inch và 3,5 inch của bạn không so sánh hình ảnh giống như ... xem câu trả lời cập nhật của tôi – foundry

Trả lời

7

để nhận điều phối Y, nhận chiều cao màn hình, trừ mọi yếu tố giao diện người dùng phía trên chế độ xem chính (như thanh trạng thái) và trừ chiều cao của UIView bạn đang đặt. Ví dụ:

float y = [UIScreen mainScreen].bounds.size.height - [UIApplication sharedApplication].statusBarFrame.size.height - myView.frame.size.height; 
[myView setFrame:CGRectMake(0, y, myView.frame.size.width, myView.frame.size.height)]; 

Dưới đây là một thực sự điển hình đầy đủ ví dụ ... 2013 ... này hoạt động độc đáo trong một UITableViewController với quầy bar nav ở phía trên, và bạn đang không sử dụng autolayout.

Position a UIView relative to the bottom of the parent view?

Hy vọng sẽ giúp ai đó.

2

Với tính năng Tự động tắt khi bạn đặt chế độ xem trên màn hình là một giá trị cố định. Để có điều chỉnh tự động này, bạn cần một số mã. Bạn sẽ cần sử dụng autoresizingMask. Dưới đây là một ví dụ của việc sử dụng autoresizingMask/

UIView *view = [[UIView alloc] init]; 
[view setAutoresizingMask:UIViewAutoresizingFlexibleTopMargin]; 
3

Bạn nên có lò xo và thanh chống của bạn (Autosizing mask) thiết lập một cái gì đó như thế này ...

enter image description here

Sau đó, quan điểm sẽ duy trì nó là khoảng cách từ chân màn hình.

cập nhật

Trong bình luận của bạn, bạn nói bạn đã thiết lập này một cách chính xác nhưng các quan điểm vẫn còn bị đẩy xuống. Tuy nhiên, những hình ảnh trong câu hỏi của bạn không so sánh giống như. Trong phiên bản 4 inch, chế độ xem của bạn dường như được cuộn lên trên đầu màn hình, không phải là trường hợp với phiên bản 3,5 inch. Tôi nghi ngờ trong đó có nguyên nhân (hoặc là chỉ cần b/c bạn phải di chuyển 4-inch của bạn lên để phù hợp với vấn đề trên màn hình?) ... bạn có thể kiểm tra và có thể cập nhật câu hỏi của bạn với chi tiết hơn về hệ thống phân cấp view của bạn.

+0

Xin chào, tôi đã thiết lập như vậy nhưng nó vẫn bỏ qua nó. – ORStudios

+0

@IconicDigital - ok thì thật kỳ lạ. Bạn có bất kỳ mã nào tạo/thiết lập các thông số khung về lượt xem hay bất kỳ thứ gì khác như vậy không? – foundry

+0

Điều thú vị là nếu tôi chuyển đổi giữa các kích cỡ trong IB, nó sẽ di chuyển tốt. Nếu bạn sau đó kiểm tra nó trong giả lập là cắt nó đi. – ORStudios

1

Cách dễ nhất để làm điều đó là chọn chế độ xem của bạn, sau đó chuyển đến Trình chỉnh sửa -> Ghim -> Không gian dưới cùng đến SuperView. Tùy chọn này sửa chế độ xem của bạn ở cuối chế độ xem vùng chứa, bất kể độ phân giải của thiết bị.

1

Mở rộng @ Câu trả lời của Google, cho iOS 7, chúng tôi không cần phải trừ chiều cao statusBar.

float y = [UIScreen mainScreen].bounds.size.height - myView.frame.size.height; 
[myView setFrame:CGRectMake(0, y, myView.frame.size.width, myView.frame.size.height)]; 
Các vấn đề liên quan