แสดง clearColor UIViewController ผ่านทาง UIViewController


150

ฉันมี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


1
ตรวจสอบให้แน่ใจว่าคุณได้ตั้งค่า modalPresentationStyle ของ rootViewController มิฉะนั้นจะใช้งานไม่ได้
Thorsten

โปรดดูความคิดเห็นเกี่ยวกับคำตอบนี้stackoverflow.com/a/25990081/1418457ทำงานได้
onmyway133

stackoverflow.com/q/27598846/1603234นี้ทำให้ฉันยิ้มตอนนี้ถึงตาคุณแล้ว :)
Hemang

ฉันต้องทำ self.modalPresentationStyle = UIModalPresentationCurrentContext; ด้วยตัวควบคุมมุมมองที่นำเสนอเพื่อให้ทำงานได้ไม่ใช่ตัวควบคุมการนำเสนอ
Tulleb

1
ตรวจสอบคำตอบของ Brody ด้านล่าง modalViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext; จะแก้ปัญหานี้
GoodSp33d

คำตอบ:


143

iOS8 +

ใน iOS8 + ตอนนี้คุณสามารถใช้ modalPresentationStyle UIModalPresentationOverCurrentContext ใหม่เพื่อนำเสนอตัวควบคุมมุมมองที่มีพื้นหลังโปร่งใส:

MyModalViewController *modalViewController = [[MyModalViewController alloc] init];
modalViewController.modalPresentationStyle = UIModalPresentationOverCurrentContext;           
[self presentViewController:modalViewController animated:YES completion:nil];    

5
ควรเป็นคำตอบที่ยอมรับได้ คำตอบที่ยอมรับก่อนหน้านี้ยังคงใช้ได้สำหรับเหตุผลดั้งเดิม แต่นี่เป็นวิธีที่แนะนำ
Tomasz Bąk

3
หากคุณกำลังพัฒนาสำหรับ iOS 8 เท่านั้นไปกับคำตอบนี้! ใช้งานได้
Mário Carvalho

2
นี่เป็นสิ่งที่ดี แต่บรรทัดสุดท้ายไม่ควร[self presentViewController:modalViewController animated:YES completion:nil];ใช่หรือไม่ (แทนที่จะเป็น targetController)?
SuperDuperTango

3
เพื่อที่จะทำงานนี้สำหรับฉันฉันเพิ่ม modalViewController.view.backgroundColor = UIColor.clearColor () ขอบคุณสำหรับการแก้ปัญหา
Pramod

ทุกคนสามารถให้รหัสสำหรับ pushviewcontroller ด้วยเช่นกัน (ฉันหมายถึงตัวควบคุมการนำทาง)
Alok

140

มติ : ฉันแก้ไขปัญหา มันใช้งานได้ดีสำหรับทั้ง 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 แนะนำรูปแบบการนำเสนอ modal ใหม่ UIModalPresentationCustom ที่ทำให้ iOS ไม่ลบมุมมองที่อยู่ภายใต้ตัวควบคุมมุมมองที่นำเสนอ อย่างไรก็ตามเพื่อที่จะใช้รูปแบบการนำเสนอที่เป็นกิริยาช่วยนี้คุณจะต้องให้ตัวแทนการเปลี่ยนแปลงของคุณเองเพื่อจัดการกับงานนำเสนอและยกเลิกภาพเคลื่อนไหว สิ่งนี้ได้อธิบายไว้ในการพูดคุย 'Custom Transitions โดยใช้ View Controllers' จาก WWDC 2013 https://developer.apple.com/wwdc/videos/?id=218ซึ่งครอบคลุมวิธีการใช้ตัวแทนการเปลี่ยนแปลงของคุณเอง

คุณอาจเห็นวิธีแก้ปัญหาของฉันสำหรับปัญหาข้างต้นใน iOS7: https://github.com/hightech/iOS-7-Custom-ModalViewController-Transitions


1
self.modalPresentationStyle = UIModalPresentationCurrentContext;ทำมัน
Adriano Lucas

4
btw .. ฉันได้สังเกตเห็นว่าเนื่องจาก self.modalPresentationStyle = UIModalPresentationCurrentContext; มันไม่ได้นำเสนอ modalViewController กับภาพเคลื่อนไหว .. ความคิดใด ๆ
Devarshi

1
@Miraaj จากนั้นตั้งค่า modalPresentationStyle กลับไปที่ UIModalPresentationFullScreen ก่อนที่จะแสดง UIViewController ควรทำงานself.modalPresentationStyle = UIModalPresentationFullScreen; [self performSegueWithIdentifier:@"CustomSegue" sender:self];
hightech

1
เรียกใช้สิ่งนี้ใน iOS 6 และ 7 ตัวควบคุมมุมมองใหม่จะชัดเจนในขณะที่เคลื่อนไหวการนำเสนอ แต่เมื่ออยู่ในตำแหน่งที่พื้นหลังจะเปลี่ยนเป็นสีดำ มันจะเปลี่ยนเป็นชัดเจนอีกครั้งเมื่อเคลื่อนไหวการเลิกจ้าง มีคนอื่นที่มีปัญหานี้หรือไม่?
Drew C

3
@pkamb ฉันอัปเดตโซลูชันสำหรับ iOS 7. stackoverflow.com/a/11252969/1344459ฉันหวังว่าจะช่วยคุณ
ไฮเทค

114

ดังนั้นสำหรับนักคิดเชิงภาพและแฟนสตอรี่บอร์ดคุณสามารถทำได้:

1. การนำเสนอตัวควบคุมมุมมอง

กำหนดบริบท

2. ตัวควบคุมมุมมองที่นำเสนอ

การนำเสนอ: เหนือบริบทปัจจุบัน


นี่ควรเป็นคำตอบที่ยอมรับได้ นี่คือทั้งหมดที่คุณต้องทำเพื่อให้สิ่งนี้ใช้งานได้จากนั้นตั้งค่าสีพื้นหลังของมุมมองบนตัวควบคุม modal เพื่อล้างข้อมูล
เจสซี่

ตกลงตัวเลือกกระดานเรื่องราวจะเขียนทับรหัสในกรณีนี้
C0D3

17
คำตอบนี้หวานมากตอนนี้ฉันเป็นเบาหวานแล้ว
GeneCode

25

โซลูชัน Swift 3 & iOS10:

//create view controller
let vc = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "RoadTripPreviewViewController")
//remove black screen in background
vc.modalPresentationStyle = .overCurrentContext
//add clear color background
vc.view.backgroundColor = UIColor.clear
//present modal
self.present(vc, animated: true, completion: nil)

16

นี่คือจาก xCode 7 เบต้า 4 โดยใช้ส่วนควบคุมการลาก เพียงแค่ตั้งค่าพื้นหลังของปลายทางของคุณให้ชัดเจนและตั้งค่าคุณสมบัติ segue ใน IB เช่นนี้ (หมายเหตุการนำเสนอสามารถเป็น "แบบเต็มหน้าจอ"):

ป้อนคำอธิบายรูปภาพที่นี่


2
ขอบคุณ. ฉันได้ทำซีเควสฟิกซ์ของคุณ + คำตอบของ ViewControllers โดย @pasevin และใช้งานได้ !!
CSawy

1
สิ่งนี้ตอบคำถามของฉัน ขอบคุณมาก. มีการโหวต: D
Nate4436271

8

ฉันพบวิธีที่ง่ายที่สุดในการทำให้มันทำงานบน iOS7 และ iOS8 คือการเพิ่มการตั้งค่าการนำเสนอสไตล์เป็น UIModalPresentationOverCurrentContext บน modallyPresentedVC (ViewController ซึ่งคุณต้องการนำเสนอ modally) เพราะ iOS8:

[modallyPresentedVC setModalPresentationStyle:UIModalPresentationOverCurrentContext];
[modallyPresentedVC.navigationController setModalPresentationStyle:UIModalPresentationOverCurrentContext];

และ UIModalPresentationCurrentContext ในการนำเสนอVC (ตัวควบคุมที่นำเสนอ modallyPresented) เนื่องจาก iOS7:

[presentingVC setModalPresentationStyle:UIModalPresentationCurrentContext];
[presentingVC.navigationController setModalPresentationStyle:UIModalPresentationCurrentContext];

เพราะสิ่งต่าง ๆ มีการจัดการแตกต่างกันใน iOS7 และ iOS8 แน่นอนคุณไม่ต้องตั้งค่าคุณสมบัติ navigationController หากคุณไม่ได้ใช้ หวังว่าจะช่วย


บันทึกเบคอนของฉันแล้ว! ขอบคุณ
Duck

5

รุ่น Swift2:

let vc = self.storyboard!.instantiateViewControllerWithIdentifier("YourViewController") as! YourViewController
vc.view.backgroundColor = UIColor.clearColor()
vc.modalPresentationStyle = UIModalPresentationStyle.OverFullScreen // orOverCurrentContext to place under navigation
self.presentViewController(vc, animated: true, completion: nil)

4

อีกวิธีหนึ่ง (ไม่จำเป็นต้องสร้างการเปลี่ยนแปลงที่กำหนดเองและทำงานบน iOS 7)

ใช้สตอรี่บอร์ด:

สร้าง Child View Controller ที่มีขนาดอิสระตั้งค่าความกว้างของมุมมองเป็น 500x500 (ตัวอย่าง) และเพิ่มวิธีถัดไป:

- (void)viewWillLayoutSubviews{
    [super viewWillLayoutSubviews];
    self.view.superview.bounds = CGRectMake(0, 0, 500, 500);
    self.view.superview.backgroundColor = [UIColor clearColor];
}

จากนั้นสร้าง Modal Segue ด้วย Form Sheet และทดสอบ


คุณช่างน่าอัศจรรย์!!! ใช้งานได้จริง !!! (การตั้งค่าขนาด "อิสระ" ใน IB จะไม่ส่งผลกระทบต่อการใช้งานเพราะมันเป็นระบบจำลองแต่ทว่ามันใช้งานได้ !!!) และมันก็ง่ายมาก !!!
Radu Simionescu

4

โซลูชัน iOS 7 พร้อมส่วนต่อขยายที่กำหนดเอง:

CustomSegue.h
#import <UIKit/UIKit.h>

    @interface CustomSegue : UIStoryboardSegue <UIViewControllerTransitioningDelegate, UIViewControllerAnimatedTransitioning>

    @end



CustomSegue.m
#import "CustomSegue.h"

@implementation CustomSegue

-(void)perform {

    UIViewController* destViewController = (UIViewController*)[self destinationViewController];
    destViewController.view.backgroundColor = [UIColor clearColor];
    [destViewController setTransitioningDelegate:self];
    destViewController.modalPresentationStyle = UIModalPresentationCustom;
    [[self sourceViewController] presentViewController:[self destinationViewController] animated:YES completion:nil];
}


//===================================================================
// - UIViewControllerAnimatedTransitioning
//===================================================================

- (NSTimeInterval)transitionDuration:(id <UIViewControllerContextTransitioning>)transitionContext {
    return 0.25f;
}

- (void)animateTransition:(id <UIViewControllerContextTransitioning>)transitionContext {

    UIView *inView = [transitionContext containerView];
    UIViewController* toVC = (UIViewController*)[transitionContext viewControllerForKey:UITransitionContextToViewControllerKey];
    UIViewController* fromVC = (UIViewController *)[transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey];

    [inView addSubview:toVC.view];

    CGRect screenRect = [[UIScreen mainScreen] bounds];
    [toVC.view setFrame:CGRectMake(0, screenRect.size.height, fromVC.view.frame.size.width, fromVC.view.frame.size.height)];

    [UIView animateWithDuration:0.25f
                     animations:^{

                         [toVC.view setFrame:CGRectMake(0, 0, fromVC.view.frame.size.width, fromVC.view.frame.size.height)];
                     }
                     completion:^(BOOL finished) {
                         [transitionContext completeTransition:YES];
                     }];
}


//===================================================================
// - UIViewControllerTransitioningDelegate
//===================================================================

- (id <UIViewControllerAnimatedTransitioning>)animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source {

    return self;
}

- (id <UIViewControllerAnimatedTransitioning>)animationControllerForDismissedController:(UIViewController *)dismissed {
    //I will fix it later.
    //    AnimatedTransitioning *controller = [[AnimatedTransitioning alloc]init];
    //    controller.isPresenting = NO;
    //    return controller;
    return nil;
}

- (id <UIViewControllerInteractiveTransitioning>)interactionControllerForPresentation:(id <UIViewControllerAnimatedTransitioning>)animator {
    return nil;
}

- (id <UIViewControllerInteractiveTransitioning>)interactionControllerForDismissal:(id <UIViewControllerAnimatedTransitioning>)animator {
    return nil;
}

@end

โซลูชันขึ้นอยู่กับรหัสไฮเทค


เมื่อฉันยกเลิกโดย [self dismissViewControllerAnimated: YES complete: NULL]; ฉันได้รับการยกเว้น?
Asadullah Ali

ใช่สำหรับรหัสนี้ หรือคุณต้องใช้วิธีการ animationControllerForDismissedController สำหรับการเคลื่อนไหวเริ่มทำงาน
Max Gribov

4

สำหรับฉันงานนี้:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main_iPhone" bundle:nil];
    UIViewController *vc = [storyboard instantiateViewControllerWithIdentifier:@"MMPushNotificationViewController"];

    vc.view.backgroundColor = [UIColor clearColor];
    self.modalPresentationStyle = UIModalPresentationCurrentContext;
#ifdef __IPHONE_8_0
    if(IS_OS_8_OR_LATER)
    {
        self.providesPresentationContextTransitionStyle = YES;
        self.definesPresentationContext = YES;
        [vc setModalPresentationStyle:UIModalPresentationOverCurrentContext];
    }
#endif


    [self presentViewController:vc animated:NO completion:nil];

MMPushNotificationViewControllerเป็นคอนโทรลเลอร์มุมมองโปร่งใสและฉันยังทำให้MMPushNotificationViewControllerสีมุมมองของเป็นสีใส ตอนนี้สิ่งที่ฉันทำและทำให้โปร่งใส


2

สำหรับ iOS7

ขณะนี้มีวิธีการเพื่อให้บรรลุสิ่งนี้โดยใช้การเปลี่ยนแปลงที่กำหนดเอง iOS7 ด้วยวิธีนี้:

MyController * controller = [MyController new];
[controller setTransitioningDelegate:self.transitionController];
controller.modalPresentationStyle = UIModalPresentationCustom;
[self controller animated:YES completion:nil];

ในการสร้างการเปลี่ยนแปลงที่กำหนดเองคุณต้องมี 2 สิ่ง:

  • วัตถุ TransitionDelegate (ใช้งาน <UIViewControllerTransitionDelegate>)
  • วัตถุ "AnimatedTransitioning" (กำลังใช้งาน<UIViewControllerAnimatedTransitioning>)

คุณสามารถหาข้อมูลเพิ่มเติมเกี่ยวกับการเปลี่ยนที่กำหนดเองได้ในบทช่วยสอนนี้


เหตุผลเฉพาะใด ๆ ที่ทำให้คุณเพิ่ม mainviewcontroller และคลาสวิวคอนโทรลเลอร์อันดับสองในคลาสแอนิเมเตอร์? ทำไมคุณถึงไม่ใช้ UIViewController * toVC = (UIViewController *) โดยตรง [transitionContext viewControllerForKey: UITransitionContextToViewControllerKey]; UIViewController * fromVC = (UIViewController *) [transitionContext viewControllerForKey: UITransitionContextFromViewControllerKey];
Satyam Raikar

ไม่ใช่แบบฝึกหัดของฉันดังนั้นฉันจึงไม่ทราบรายละเอียดเกี่ยวกับสิ่งนี้ จุดของคุณดูเหมือนว่าถูกต้อง
Kirualex

2

ใช้งานได้ดีบนiOS7และiOS8

UIViewController* vc=[[UIViewController alloc]initWithNibName:@"VC" bundle:nil];

vc.view.alpha=0.7;
[vc setModalPresentationStyle:UIModalPresentationOverCurrentContext];

self.navigationController.modalPresentationStyle = UIModalPresentationCurrentContext;

[self presentViewController:vc animated:NO completion:nil];

คำตอบที่ดีที่สุดอันดับสองซ้ำ
Tomasz Bąk

2

นอกจากนี้คุณยังสามารถ 'เพิ่มใหม่' หน้าต่างไปที่มุมมอง

OneViewController *vc = [[OneViewController alloc] init];
if ([self respondsToSelector:@selector(presentViewController:animated:completion:)]) {
    [self presentViewController:vc animated:YES completion:nil];
} else {
    [self presentModalViewController:vc animated:YES];
}

[[[UIApplication sharedApplication] keyWindow] insertSubview:self.view atIndex:0];

และด้วยวิธีนี้การนำเสนอสามารถเคลื่อนไหวได้


1

สำหรับ iOS 7 และโดยใช้ตัวสร้างส่วนติดต่อเท่านั้นสามารถทำได้โดยการตั้งค่าการนำเสนอเป็น "เกินบริบทปัจจุบัน" ในตัวควบคุมมุมมองทั้งหมดที่เกี่ยวข้องในการนำเสนอ modal แม้สำหรับตัวควบคุมทิศทาง

ตัวอย่างเช่นตั้งค่าในตัวควบคุมมุมมองเหล่านี้ทั้งหมด:

NavController -> RootViewController -> ModalViewController

ป้อนคำอธิบายรูปภาพที่นี่


0

ฉันไม่ได้เล่นกับ Storyboard / Interface builder มากนัก แต่สิ่งที่โผล่ออกมาที่ฉันคือคุณกำลังบอกมุมมองว่าเป็นสีที่ชัดเจน (เช่น 100% alpha / see-through) และบอกให้มันทึบ ( 0% alpha - solid สมบูรณ์) สองสิ่งนี้ดูเหมือนจะไม่เข้าข่าย ฉันจะแสดงความคิดเห็นออกself.view.opaque = YES;และดูว่ามันทำงานแล้ว;)

อา, อย่างอื่นที่ฉันคิด - เป็นไปได้ทั้งหมดที่ตัวควบคุมมุมมองของคุณมีพื้นหลังอัลฟ่า แต่แน่นอนว่าอัลฟาจะแสดงผ่านสีของหน้าต่างฐานหรือรูทวิวคอนโทรลเลอร์ของโปรแกรมซึ่งก็คือ สีดำเริ่มต้น เลเยอร์พื้นฐานของแอปทั้งหมดของคุณไม่สามารถมีพื้นหลังโปร่งใส - โปร่งใสอะไร อะไรอยู่ข้างหลัง จะต้องมีบางสิ่งบางอย่างที่จะเห็นผ่านความโปร่งใส มันสมเหตุสมผลไหม


ฉันพยายามที่จะคอมเม้นต์ self.view.opaque = YES; บรรทัดและมันไม่ทำงาน :-(
hightech

คุณอ่านส่วนที่สองของคำตอบของฉันหรือไม่ คุณอาจไม่สามารถทำสิ่งที่คุณต้องการขึ้นอยู่กับการตั้งค่าของคุณ คุณวางอะไรอยู่ด้านหลัง clearColor VC บางทีเราสามารถคัดออกได้ ^^
WendiKidd

-3

เพียงแค่ใช้ "self.modalPresentationStyle = UIModalPresentationCurrentContext;" ในการนำเสนอมุมมอง

จะทำงานได้ดี :)


1
นี่เป็นเพียงการทำซ้ำสิ่งที่คำตอบที่มีอยู่ได้พูดไปแล้ว
ปาง
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.