Tôi muốn hiển thị bảng cảnh báo tùy chỉnh trên ứng dụng của mình, nhưng có UIViewController trước đó hiển thị trong nền. Tôi đã hy vọng để hiển thị điều này như một bộ điều khiển xem phương thức. Làm thế nào để làm điều này mà không có UIViewController trước chuyển sang màu đen và biến mất?Làm cách nào để che phủ một modalViewController ở đầu chế độ xem khác mà không có biến thể gốc biến mất?
Trả lời
Thay vì hiển thị các vc mới như một vc phương thức, bạn cần phải thêm nó như nhìn con điều khiển:
AlertPanelVC *alertVC = ...
[self addChildViewController: alertVC];
alertVC.view.frame = ...; //or something equivalent if you're using auto layout
[self.view addSubview: alertVC.view];
[alertVC didMoveToParentViewController: self];
Để bỏ qua nó:
[alertVC willMoveToParentViewController:nil];
[alertVC.view removeFromSuperview];
[alertVC removeFromParentViewController];
Dưới đây là những gì tôi đã sử dụng:
MyCustomAlertViewController *myCustomAlertViewController = [[MyCustomAlertViewController alloc]initWithNibName:@"MyCustomAlertViewController" bundle:nil];
myCustomAlertViewController.delegate = self; //optional if you have delegate setup
[myCustomAlertViewController setModalPresentationStyle:UIModalPresentationPageSheet];
[myCustomAlertViewController setModalTransitionStyle:UIModalTransitionStyleFlipHorizontal];
[self presentViewController:myCustomAlertViewController animated:YES completion:^{
//do stuff after the view is displayed.
}];
myCustomAlertViewController.view.superview.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleBottomMargin;
myCustomAlertViewController.view.superview.frame = CGRectMake(calculatedCenterX, CalculatedCenterY, myCustomAlertViewControllerWidth, myCustomAlertViewControllerHeight);
//calculatedCenterX = (1024 - myCustomAlertViewControllerWidth)/2; //for example
//calculatedCenterY = (768 - myCustomAlertViewControllerHeight)/2;
có thành phần cool blurred cho điều đó. tất nhiên, chỉ là vấn đề về hương vị. :)
Khi trình bày bộ điều khiển chế độ xem bằng cách sử dụng kiểu UIModalPresentationFullScreen, UIKit thường loại bỏ chế độ xem của trình điều khiển chế độ xem cơ bản sau khi kết thúc hoạt ảnh chuyển tiếp. Bạn có thể ngăn chặn việc loại bỏ các khung nhìn đó bằng cách chỉ định kiểu UIModalPresentationOverFullScreen thay thế. Bạn có thể sử dụng kiểu đó khi bộ điều khiển xem được trình bày có các vùng trong suốt cho phép hiển thị nội dung cơ bản.
Vì vậy, về cơ bản nhanh chóng viewController của bạn, xác định kiểu presenation modal và sau đó trình bày các điều khiển xem.
Nếu bạn muốn có nền trong suốt (bán), chỉ cần điều chỉnh màu của giao diện chính của bộ điều khiển chế độ xem.
- 1. Có thể che giấu Chế độ xem trong Android không?
- 2. Chế độ xem cuộn giúp chế độ xem dưới cùng biến mất trong Hộp thoại
- 3. CodeIgniter - truy cập biến $ config ở chế độ xem
- 4. Có thể đặt một chế độ xem trên một chế độ xem khác trong Android không?
- 5. Cách che phủ chế độ xem trên thanh điều hướng điều hướng?
- 6. AngularJS: Nhiều chế độ xem có định tuyến mà không làm mất phạm vi
- 7. Làm cách nào tôi có thể gọi một chế độ xem khác trong chế độ xem couchdb?
- 8. Chế độ xem Android biến mất bằng cách nhấp vào bên ngoài của nó
- 9. Gỡ lỗi maven mà không làm mất biến MAVEN_OPTS
- 10. Làm cách nào để lấy khung của chế độ xem trong chế độ xem khác?
- 11. Làm thế nào để chế biến một biến dao riêng?
- 12. Tạo chế độ xem lớp phủ nhấp qua
- 13. Làm cho thanh trạng thái iPhone biến mất khi hiển thị chế độ xem phương thức?
- 14. cách tải chế độ xem vào một chế độ xem mã vạch 2.1 khác?
- 15. Visual Studio 2012 - nơi thiết kế ASPX và chế độ xem chia tách đã biến mất?
- 16. Python: list.extend mà không biến đổi biến ban đầu
- 17. Chế độ xem Android biến mất khi ra bên ngoài phụ huynh
- 18. Bộ điều khiển chế độ xem ShareKit sẽ không biến mất
- 19. Chế độ xem phụ UITableViewCell biến mất khi ô được chọn
- 20. Làm cách nào để che phủ hai geom_bar?
- 21. Chế độ xem nhãn vô hiệu biến mất khi chiều cao lớn hơn 8192
- 22. Tôi có thể gọi chế độ xem từ trong chế độ xem khác không?
- 23. Tải chế độ xem trong một chế độ xem khác
- 24. Gridview biến mất?
- 25. Làm cách nào để căn chỉnh chế độ xem ở giữa một đường cơ sở lượt xem khác?
- 26. Làm cách nào để kiểm tra xem chế độ xem phương thức hiện có trên self.window.rootViewController của tôi không?
- 27. AnnotationView hoạt ảnh biến mất trong khi phóng to chế độ xem bản đồ?
- 28. Express + jade: biến cục bộ không khả dụng ở chế độ xem
- 29. Lucene.Net.Highlight đã biến mất ở đâu?
- 30. Có thể ánh xạ một servlet để/* mà không trọng chế biến JSP
Câu trả lời hay. Tôi sẽ thêm hai sửa đổi. (1) Thay vì thêm và loại bỏ chế độ xem phụ đơn giản, bạn có thể tạo hiệu ứng động. (2) Bạn sẽ muốn chặn tương tác người dùng với phần bên ngoài của màn hình hiển thị trong nền. Để làm như vậy, hãy làm cho chế độ xem của trình điều khiển chế độ xem mới có cùng kích thước với màn hình, với nền rõ ràng trong đó tương tác của người dùng bị tắt. Người dùng không thể nhìn thấy nó (nó rõ ràng) nhưng nó chặn chạm từ rơi xuống. Giao diện mới của bạn sau đó là một chế độ xem con trên đầu trang * đó *. – matt
Đồng ý. Cá nhân tôi thích sử dụng một 'background view' màu đen với giá trị alpha là 0.5-0.8. Điều đó tạo ra hiệu ứng mà nền tối khi 'lớp phủ' được hiển thị. Nhưng đó chỉ là sở thích cá nhân. :) – Tobi
Chỉ cần thử thêm 'nil' như fromViewController ... gặp lỗi" 'Bộ điều khiển xem trẻ em (null) và phải có bộ điều khiển xem chung chung khi gọi - [UIViewController transitionFromViewController: ...' ", vì vậy tôi không nghĩ rằng điều này sẽ làm việc. –
denikov