2013-09-04 24 views
18

Tôi hiện đang chuyển ứng dụng của mình sang iOS 7 (Tôi muốn nó vẫn tương thích với iOS 6). Câu hỏi này không thuộc phạm vi điều chỉnh của NDA của Apple, đó là câu hỏi về bố cục tự động (có vẻ như iOS 7 buộc bố cục tự động (EDIT: sai, nó không bị ép buộc)).Bố cục tự động với thanh điều hướng và bộ điều khiển xem (iOS 7)

Tôi có bộ điều khiển điều hướng với bộ điều khiển chế độ xem gốc (hiển nhiên). Với iOS 6, tôi không sử dụng Bố cục Tự động, do đó các trình điều khiển chế độ xem gốc nằm bên dưới thanh điều hướng. Với iOS 7, nguồn gốc khung không bao gồm thanh điều hướng, vì vậy phần trên cùng của nội dung của tôi bị ẩn ...

Bạn có ý tưởng cách tạo toàn bộ khung nhìn phía trên thanh điều hướng với Bố cục tự động không?

Cảm ơn!

+0

Tôi có thể sai nhưng tôi sẽ ngạc nhiên nếu Apple "buộc "nhà phát triển sử dụng bố cục tự động trong iOS7? Đây có phải là trường hợp không? (thông tin này có thể được bao gồm bởi NDA!) – bennythemink

+0

Tự động trả lời không bị ép buộc trong iOS 7. Nó được cải thiện. –

+0

Nó bị ép buộc. họ không đề cập đến trong tài liệu. Kiểm tra các giá trị khung trước khi viewDidLoad và viewDidAppear. Tôi không sử dụng IB nhưng giá trị vẫn khác nhau .. Điều này đề nghị gì ?? !! –

Trả lời

22

Trên iOS 7, bạn có topLayoutGuide chỉ định thanh điều hướng. Sau đó bạn có thể chỉ định rằng bạn muốn rằng ràng buộc của tableview là trên topLayoutGuide và không phải là superview.

này sẽ giúp bạn biết nếu nó iOS7 hay không:

if ([self respondsToSelector:@selector(topLayoutGuide)]) 

Vì vậy, nó có thể là một cái gì đó như thế

NSString *verticalConstraint = @"V:|[v]|"; 
NSMutableDictionary *views = [NSMutableDictionary new]; 
views[@"v"] = self.tableview; 
if ([self respondsToSelector:@selector(topLayoutGuide)]) { 
    views[@"topLayoutGuide"] = self.topLayoutGuide; 
    verticalConstraint = @"V:[topLayoutGuide][v]|"; 
} 
[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:verticalConstraint options:0 metrics:nil views:views]]; 
[self.view addConstraints:constraints]; 
+1

để biên dịch trên ios 6, self.topLayoutGuide cần phải [self valueForKey: @ "topLayoutGuide"] (thử nghiệm trên iOS 7 GM) –

+0

@kschaeffler bạn có thể giải thích cú pháp đằng sau @ "V: [topLayoutGuide] [v] | "? Tôi đang đi qua bài viết về ngôn ngữ định dạng trực quan, nhưng tôi vẫn còn chút bối rối. Tôi nghĩ rằng nó nói rằng dọc có liên quan đến topLayoutGuide, nhưng ... Edit: * Flash - bóng đèn đi off * Nevermind, tôi nghĩ rằng tôi hiểu. Bắt đầu V: nói rằng bạn đang thiết lập một bố cục dọc, và sau đó [object1] [object2] đang nói rằng các đối tượng 1 và 2 là tuôn ra - phải chống lại nhau. Chỉ cần không chắc chắn những gì | làm. – RonLugge

+0

OK, vì tôi đã tìm ra chính mình, tôi sẽ chỉ đăng một lời giải thích nhanh: phần 'V:' sửa đổi điều này để bạn thực hiện bố cục dọc. [TopLayoutGuide] hoạt động như một tham chiếu đến hướng dẫn bố cục hàng đầu được cung cấp bởi chế độ xem, được đặt ngang với khung nhìn con, được biểu thị bằng [v]. Các ống đóng có nghĩa là cạnh của xem là tuôn ra với sự kết thúc của superview. Một khi đã hiểu, một ngôn ngữ bố cục rất rõ ràng và đẹp ... nếu khó hiểu lúc đầu. – RonLugge