Tôi có một UIViewController
khung nhìn như một khung nhìn / phương thức trên đầu của một UIViewController
khung nhìn khác , chẳng hạn như khung nhìn con / phương thức phải trong suốt và bất kỳ thành phần nào được thêm vào khung nhìn phụ sẽ hiển thị. Vấn đề là tôi có là subview hiển thị nền đen thay vì có ClearColor. Tôi đang cố gắng làm cho UIView
một nền rõ ràng không màu đen. Có ai biết cái gì là sai với nó? Bất kỳ đề nghị đánh giá cao.
FirstViewControll.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];
SecondViewControll.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.opaque = YES;
self.view.backgroundColor = [UIColor clearColor];
}
GIẢI QUYẾT : Tôi đã sửa các vấn đề. Nó đang hoạt động rất tốt cho cả iPhone và iPad. Modal View Controller không có nền đen chỉ rõ màu / trong suốt. Điều duy nhất mà tôi cần phải thay đổi là tôi đã thay thế UIModalPresentationFullScreen
cho UIModalPresentationCurrentContext
. Thật đơn giản!
FirstViewControll.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
THÔNG BÁO: Nếu bạn đang sử dụng một modalPresentationStyle
tài sản của navigationController
:
FirstViewControll.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
vc.view.backgroundColor = [UIColor clearColor];
self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;
[self presentViewController:vc animated:NO completion:nil];
THÔNG BÁO: Tin xấu là giải pháp trên không hoạt động trên iOS 7. Tin vui là tôi đã khắc phục sự cố cho iOS7! Tôi đã nhờ ai đó giúp đỡ và đây là những gì anh ấy nói:
Khi trình bày một bộ điều khiển chế độ xem một cách hợp lý, iOS sẽ loại bỏ các bộ điều khiển chế độ xem bên dưới nó khỏi hệ thống phân cấp chế độ xem trong khoảng thời gian nó được trình bày. Mặc dù chế độ xem của trình điều khiển chế độ xem được trình bày một cách minh bạch, nhưng không có gì bên dưới nó ngoại trừ cửa sổ ứng dụng có màu đen. iOS 7 đã giới thiệu một kiểu trình bày phương thức mới UIModalPresentationCustom
, khiến iOS không xóa các chế độ xem bên dưới trình điều khiển chế độ xem được trình bày. Tuy nhiên, để sử dụng kiểu trình bày phương thức này, bạn phải cung cấp cho đại biểu chuyển tiếp của riêng bạn để xử lý bản trình bày và loại bỏ hình ảnh động. Điều này được phác thảo trong phần 'Chuyển đổi tùy chỉnh bằng cách sử dụng bộ điều khiển xem' từ WWDC 2013 https://developer.apple.com/wwdc/ideo/?id=218 , cũng bao gồm cách triển khai đại biểu chuyển tiếp của riêng bạn.
Bạn có thể thấy giải pháp của tôi cho vấn đề trên trong iOS7: https://github.com/hightech/iOS-7-Custom-ModalViewControll-Transitions
modalViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
sẽ giải quyết vấn đề,