How do I make a semi-transparent view layer above a current view?

后端 未结 5 372
一生所求
一生所求 2021-02-01 19:28

You\'ve likely seen this before, its become exceedingly popular in consumery chic apps like ScoutMob. I\'m trying to implement a 60% transparent view on launch that will cover m

相关标签:
5条回答
  • 2021-02-01 19:55

    This can be easily accomplished with a UITextView and a UIButton. Simply place the UITextView on the screen with the content you want to display, making it the full frame size of the screen, and change the background color to a black background with background alpha of .6

    [UIColor colorWithRed: 0 withGreen: 0 withBlue: 0 withAlpha: .6];
    

    Then place the button as a subview on top, making it the full frame of the screen, and setting it's alpha to 0. Set the action of the button to hide the textview and button.

    Example:

    UITextView* textview = [[UITextView alloc] initWithFrame:self.view.frame];
    [textview setText: @"Text here"];
    [textview setBackgroundColor: [UIColor colorWithRed: 0 withGreen: 0 withBlue: 0 withAlpha: .6]];
    [textview setTextColor: [UIColor whiteColor]];
    [self.view addSubview: textview];
    
    UIButton* btn = [[UIButton alloc] initWithFrame:self.view.frame];
    [btn setAlpha:0];
    [btn addTarget:self action:@selector(method) forEvent:UIControlEventTouchUpInside];
    [self.view addSubview: btn];
    

    You may want to check the addTarget: method; I'm not sure those are the correct parameters off the top of my head.

    0 讨论(0)
  • 2021-02-01 20:03
    // get your window screen size
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    //create a new view with the same size
    UIView* coverView = [[UIView alloc] initWithFrame:screenRect];
    // change the background color to black and the opacity to 0.6
    coverView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.6];
    // add this new view to your main view
    [self.view addSubview:coverView];
    

    when you are done with it , you can remove it :

    [coverView removeFromSuperview];
    

    Swift3 version:

    // get your window screen size
    let screenRect = UIScreen.main.bounds
    //create a new view with the same size
    let coverView = UIView(frame: screenRect)
    // change the background color to black and the opacity to 0.6
    coverView.backgroundColor = UIColor.black.withAlphaComponent(0.6)        
    // add this new view to your main view
    self.view.addSubview(coverView)
    

    to remove it:

    coverView.removeFromSuperview()
    
    0 讨论(0)
  • 2021-02-01 20:16

    Swift 4 update

     view.isOpaque = false  
    
     view.backgroundColor = UIColor.black.withAlphaComponent(0.2)
    

    This option available in storyboard . Make sure to uncheck the Opaque option

    0 讨论(0)
  • 2021-02-01 20:18

    Just make a mechanism that figures out if it is the first launch of the app, then tells your main view controller to add a (probably image) view on top of the current view with 0.6 alpha

    if (figureOutIfIsFirstLaunch)
    {
        UIImageView *myOverlay = [...];
        myOverlay.frame = self.view.bounds;
        myOverlay.alpha = 0.6;
        [self.view addSubview:myOverlay];
    } 
    
    0 讨论(0)
  • 2021-02-01 20:20
    1. create UIView, name it what you want (dimBackgroundUIView) then set the backgroundcolor as Black and set alpha to 0.1 or 0.2 or....
    2. add these 2 lines of code when you need to dim the background: [self.view addSubview:dimBackgroundUIView]; [self addConstraintsForDimView];
    3. and add these 2 lines of code when you want to remove the dimming background: if(dimBackgroundUIView) [dimBackgroundUIView removeFromSuperview];
    4. do not forgot to add the constraints(layouts) for dimBackgroundUIView.

    check this: iOS Dim background when a view is shown

    and do not forget to read the note below the code to understand what you have to do.

    0 讨论(0)
提交回复
热议问题