ฉันมีUIViewController
มุมมองเป็น subview / modal ด้านบนของUIViewController
มุมมองอื่นเช่นว่า subview / modal ควรมีความโปร่งใสและส่วนประกอบอะไรก็ตามที่ถูกเพิ่มเข้าไปใน subview นั้นควรมองเห็นได้ ปัญหาคือฉันมี subview แสดงพื้นหลังสีดำแทนที่จะมี clearColor ฉันพยายามที่จะทำให้UIView
เป็นสีที่ชัดเจนไม่ใช่พื้นหลังสีดำ มีใครรู้บ้างว่ามันมีอะไรผิดปกติหรือไม่? ข้อเสนอแนะใด ๆ ชื่นชม
FirstViewController.m
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"SecondViewController"];
[vc setModalPresentationStyle:UIModalPresentationFullScreen];
[self presentModalViewController:vc animated:NO];
SecondViewController.m
- (void)viewDidLoad
{
[super viewDidLoad];
self.view.opaque = YES;
self.view.backgroundColor = [UIColor clearColor];
}
มติ : ฉันแก้ไขปัญหา มันใช้งานได้ดีสำหรับทั้ง iPhone และ iPad Modal View Controller ที่ไม่มีพื้นหลังสีดำเพียงแค่ชัดเจนสี / โปร่งใส สิ่งเดียวที่ฉันต้องการที่จะเปลี่ยนแปลงเป็นสิ่งที่ฉันแทนที่ไปUIModalPresentationFullScreen
UIModalPresentationCurrentContext
นั่นง่ายมาก!
FirstViewController.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];
ข้อสังเกต:หากคุณใช้modalPresentationStyle
ทรัพย์สินของnavigationController
:
FirstViewController.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];
ข้อสังเกต: ข่าวดีก็คือทางออกข้างต้นไม่สามารถใช้กับ iOS 7 ได้ข่าวดีก็คือฉันได้แก้ไขปัญหาสำหรับ iOS7 แล้ว! ฉันถามคนเพื่อขอความช่วยเหลือและนี่คือสิ่งที่เขาพูดว่า:
เมื่อแสดงตัวควบคุมมุมมองแบบ Modally iOS จะลบตัวควบคุมมุมมองที่อยู่ด้านล่างออกจากลำดับชั้นมุมมองในช่วงเวลาที่นำเสนอ ในขณะที่มุมมองของตัวควบคุมมุมมองที่นำเสนอเป็น modally ของคุณมีความโปร่งใสไม่มีอะไรอยู่ภายใต้มันยกเว้นหน้าต่างแอปซึ่งเป็นสีดำ iOS 7 แนะนำรูปแบบการนำเสนอแบบใหม่UIModalPresentationCustom
ซึ่งทำให้ iOS ไม่ต้องลบมุมมองที่อยู่ภายใต้ตัวควบคุมมุมมองที่นำเสนอ อย่างไรก็ตามเพื่อที่จะใช้รูปแบบการนำเสนอที่เป็นกิริยาช่วยนี้คุณจะต้องให้ตัวแทนการเปลี่ยนแปลงของคุณเองเพื่อจัดการกับงานนำเสนอและยกเลิกภาพเคลื่อนไหว สิ่งนี้ได้อธิบายไว้ในการพูดคุย 'การเปลี่ยนผ่านที่กำหนดเองโดยใช้ตัวควบคุมมุมมอง' จาก WWDC 2013 https://developer.apple.com/wwdc/videos/?id=218ซึ่งครอบคลุมวิธีการใช้ตัวแทนการเปลี่ยนแปลงของคุณเอง
คุณอาจเห็นวิธีแก้ปัญหาของฉันสำหรับปัญหาข้างต้นใน iOS7: https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions
modalViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;
จะแก้ปัญหานี้