Как затемнить родительский UIView (50% прозрачность) для входа в систему? - PullRequest
6 голосов
/ 08 августа 2011

У меня есть вид с кнопкой входа в систему.Когда кнопка нажата, я добавляю вид с полями для входа в систему.Когда это происходит, мне нужно затемнить родительский вид.Как мне это сделать?

Ответы [ 4 ]

8 голосов
/ 13 мая 2016

Swift 2

UIViews имеет свойство с именем maskView.

maskView всегда будет поверх UIView кто владеет им.

поэтому ваш подход должен выглядеть примерно так (это для Swift, но его легко конвертировать в Obj-c):

self.view.maskView = UIView(frame: self.view.frame)
self.view.maskView?.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.5)

//Do your work here, block UI, anything you need to, and then...          
self.view.maskView = nil

Swift 3

Имя свойства было изменено на mask.

self.view.mask = UIView(frame: self.frame)
self.view.mask?.backgroundColor = UIColor.black.withAlphaComponent(0.5)

//Do your work here, block UI, anything you need to, and then...
self.view.mask = nil
6 голосов
/ 08 августа 2011

Добавьте UIView поверх родительского вида, который изначально прозрачен с черным цветом фона.Когда вам нужно уменьшить его, измените альфа-представление на 0,5.Это будет прозрачно на 50%.

3 голосов
/ 25 июня 2014

Я бы выбрал вид с белым фоном:

        whiteView=[[UIView alloc]initWithFrame:viewToDim.frame];
        [whiteView setBackgroundColor:[UIColor whiteColor]];
        [whiteView setAlpha:0.5f];
        [self.view insertSubview:whiteView aboveSubview:viewToDim];
0 голосов
/ 20 января 2017
class UIDecorator: NSObject {

    static let sharedInstance = UIDecorator()
    private let dimView = UIView()
    private let loadingView = MOOverWatchLoadingView(frame: CGRectMake(0, 0, 100, 100),
                                                             autoStartAnimation: true)
    func showLoadingView() {
        if let currentPage = UIApplication.topViewController(){
            dimView.frame = currentPage.view.frame
            dimView.backgroundColor = UIColor.blackColor()
            dimView.alpha = 0.5
            currentPage.view.addSubview(dimView)
            currentPage.view.userInteractionEnabled = false
            loadingView.center = currentPage.view.center
            loadingView.backgroundColor = UIColor.clearColor()
            currentPage.view.addSubview(loadingView)
        }
    }

    func dismissLocadingView() {
        if let currentPage = UIApplication.topViewController(){
            currentPage.view.userInteractionEnabled = true
            dimView.removeFromSuperview()
            loadingView.removeFromSuperview()
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...