Tôi không chắc liệu "trình quản lý bố cục" có phải là cụm từ chính xác hay không, nhưng tôi đang tìm cách để UIViews chuyển sang chế độ xem phụ huynh, giống như div được thả nổi bên trái trong trang HTML. Có một cách dễ dàng để làm điều này, hoặc thông qua api iPhone hoặc một cái gì đó bên ngoài?iPhone - Trình quản lý bố cục cho UIViews?
Trả lời
Tôi không biết API nào để thực hiện việc này. Core Animation trên Mac có một số công cụ bố cục nhưng tôi nghĩ nó không được đưa vào iPhone.
Những gì bạn mô tả không nghe có vẻ cực kỳ khó khăn. Mã nguồn mở nó? :-)
Có! Tôi thường quá cẩu thả/lười biếng/ích kỷ vì bất kỳ ý định nguồn mở nào của tôi để đi bất cứ đâu. Nhưng có lẽ điều này sẽ khác nhau :) – morgancodes
Không có gì giống như điều này thực sự xây dựng vào sdk, nhưng nó không phải là quá khó để có được những hành vi bạn đang sau. Chỉ cần gọi
NSArray *subs = [parentView subviews];
để nhận tất cả các bản xem trước đã có. Vòng qua họ như
CGRect leftMostViewsFrame = nil;
for(UIView *cur in subs){
CGRect where = cur.frame;
//find the left most frame for a given X coord
}
và đặt quan điểm mới của bạn này bên cạnh nó
newView.frame = CGRectMake(leftMostViewsFrame.origin.x + leftMostViewsFrame.size.width,
[parentView addSubview:newView];
......
Bạn có thể viết nó nhiều sạch hơn thế và có một rất nhiều kiểm tra và lý luận bạn cần phải làm để có được tất cả các hành vi của phao, nhưng đó là cách tiếp cận cơ bản tôi sẽ mất. Tôi không biết nếu có một bên thứ ba lib bạn có thể sử dụng hay không.
Cảm ơn Joe, tôi sẽ tiếp tục và làm điều đó. – morgancodes
@morgancodes Tôi đã viết một giải pháp hoàn chỉnh dựa trên câu trả lời này: http://stackoverflow.com/a/11379438/974531 –
Sau khi thực hiện một số tìm kiếm, tôi thấy điều này: http://code.google.com/p/layoutmanagers/ Phát triển lần cuối vào tháng 12 năm 2009 nhưng thoạt nhìn, có vẻ như vẫn có thể áp dụng cho các phiên bản iOS hiện tại.
Tôi đã tạo một ngã ba ở trên trên github: https://github.com/RefuX/LayoutManagers-Fork và thêm GridLayout. Tôi đã sử dụng nó trên giao diện người dùng iPhone và iPad. Đối với iOS 4 và 5. Tôi thích nó :) – RefuX
Dưới đây là một giải pháp hoàn chỉnh (dựa trên the answer by Joe Cannatti):
Thêm một
UIView
vào bảng phân cảnh của bạn, và liên kết nó vớiViewController
của bạn dưới một số tên, ví dụcontainer
. (Trong trường hợp xem container của bạn là toàn bộ quan điểm, bạn có thể sử dụngself.view
thay vìcontainer
trongViewController.m
của bạn.)Tạo và thêm yếu tố UI-
container
. Ví dụ, bạn có thể tạo và thêm mộtUILabel
-container
với:UILabel* label = [[UILabel alloc] init]; label.text = @"Foo"; [label sizeToFit]; [container addSubview:label];
Ban đầu, và bất cứ khi nào bạn thêm/xóa/sửa đổi các yếu tố giao diện người dùng đến/từ/trong
container
, bạn có thể tái sắp xếp chúng vào dòng chảy bố trí với:float x = 0, y = 0, width = container.frame.size.width, rowHeight = 0; for (UIView* view in container.subviews) { // only re-arrange user-added views (change condition as required) if (![view isKindOfClass:UILabel.class]) continue; float w = view.frame.size.width, h = view.frame.size.height; bool fitsInRow = x + w <= width; if (!fitsInRow) {x = 0; y += rowHeight; rowHeight = h;} view.frame = CGRectMake(x, y, w, h); x += w; rowHeight = MAX(rowHeight, h); } // if container is a UIScrollView, change content size container.contentSize = CGSizeMake(width, y + rowHeight);
- 1. Trình quản lý bố cục jQuery
- 2. Trình quản lý bố cục Java Trung tâm dọc
- 3. Trình quản lý bố cục ưa thíchSize Java
- 4. Nhiều Trình quản lý bố cục trong Java
- 5. Quản lý bố cục Android, phải có cách tốt hơn
- 6. Quản lý bố cục bên trong Radiogroup định hướng ngang
- 7. Bố cục bàn phím iPhone cho số âm?
- 8. Bố cục trong chương trình Win32 GUI
- 9. thay thế bố cục trên QWidget bằng bố cục khác
- 10. Trình quản lý ngữ cảnh cho MySQLdb
- 11. Tần suất cập nhật Trình quản lý vị trí, iphone
- 12. Trình quản lý cấu hình cho PHP
- 13. Trình quản lý HSQLDB?
- 14. Quản lý cookie HTTP trên iPhone
- 15. Làm thế nào để bạn quản lý bố cục ui của ứng dụng Ember.js?
- 16. Mẫu cho nhiều Trình tải với Trình quản lý tải?
- 17. Bố cục bố cục sai trong cửa sổ bật lên
- 18. Bảo quản bố cục bàn phím trong ứng dụng xoay?
- 19. Thay đổi Bố cục Widget Lập trình
- 20. Viết trình bao bọc được quản lý cho Chromium
- 21. Bố cục lưới Vs. Bố cục bảng
- 22. Bố cục sơ đồ bố cục tự động lý thuyết xuân
- 23. Trình quản lý gói PHP
- 24. Bố cục/cấu trúc thư mục cho các dự án iPhone/iPad lớn
- 25. Tràn với bố cục bố cục tuyệt đối/tương đối
- 26. thêm bố cục trong bố cục khác
- 27. Nhiều trình quản lý gói
- 28. Xóa bố cục theo chương trình
- 29. Iphone UIButton không hoạt động trong lồng nhau UIViews
- 30. Thêm bố cục vào bố cục khác trong Qt [C++]
Được chỉ nghĩ điều tương tự. Một bộ sưu tập các LayoutManager như trong Java Swing sẽ rất hữu ích khi bạn thực sự không muốn bận tâm với InterfaceBuilder nhưng cũng không muốn phải đối phó với sự phức tạp của việc định vị mọi thứ bằng tay. – ra9r
Chỉ có chế độ xem webkit nếu bạn chỉ muốn hiển thị nội dung. Tôi đã được rối tung xung quanh với nhúng html cho các công cụ màn hình thông tin độc đáo layed-out. – morgancodes
Điều này không thực sự tồn tại trong iOS 5 trở về trước.Để biết thông tin về iOS 6, hãy tham khảo tài liệu được bảo vệ bởi NDA của bạn mà chúng tôi không thể thảo luận công khai tại đây. –