淡出除一个特定子视图之外的子视图

jaz*_*d28 1 fadeout uiview ios

我试图淡出整个视图,但一个特定的subview,这将强调subview更清晰的外观.比方说,如果self.view有5个textfields和2个UIView作为subviews,我想1 UIView加以强调.是否有一种方法可以淡出/在整个自我中使用5 textfields和1 UIView而不触及强调UIView

我已经尝试过使用方法了

+ (void)animateWithDuration:(NSTimeInterval)duration animations:(void (^)(void))animations completion:(void (^)(BOOL finished))completion
Run Code Online (Sandbox Code Playgroud)

如:

[UIView animateWithDuration:0.75
                 animations:^{
                     self.view.alpha = 0.5f;

                 }
                 completion:^(BOOL finished){self.view.layer.shouldRasterize = NO;}];
Run Code Online (Sandbox Code Playgroud)

但是,似乎整个子视图都受到上面UIView动画的影响.任何建议或提示将不胜感激.

Lev*_*evi 7

如果你降低a的alpha值UIView,那么它的所有子视图的alpha都会降低.解决问题的方法是单独降低每个子视图的alpha值,除了你想要的那个:

UIView emphasizedView = ...

[UIView animateWithDuration:0.75
                 animations:^{
                     for (UIView *view in self.view.subviews) {
                         if (view != emphasizedView) {
                             view.alpha = 0.5f;
                         } else {
                             view.alpha = 1;
                         }
                     }

                 }
                 completion:^(BOOL finished){self.view.layer.shouldRasterize = NO;}];
Run Code Online (Sandbox Code Playgroud)