使UIView为自定义活动指示器视图半透明

时间:2014-06-10 06:06:30

标签: ios objective-c uiview calayer

我已经为我的iOS应用程序实现了自定义活动指示器视图,该视图工作顺利。要求是在自定义活动指示器为动画时将超视图的alpha设置为50%(或使其为半透明),并在自定义活动指示器停止时将其设置为正常。我正在使用以下类方法添加自定义活动指示器进行查看。

+ (CustomActivityIndicatorView*)addCustomActivityIndicatorToView:(UIView *)view
{
    CustomActivityIndicatorView *customActivityIndicatorView = [[CustomActivityIndicatorView alloc]init];
    customActivityIndicatorView.hidesWhenStopsAnimating = NO;
    [customActivityIndicatorView setFrame:CGRectMake(view.bounds.size.width/2-(customActivityIndicatorView.frame.size.width/2), view.bounds.size.height/2-(customActivityIndicatorView.frame.size.height/2), customActivityIndicatorView.frame.size.width, customActivityIndicatorView.frame.size.height)];
    [view addSubview:customActivityIndicatorView];
    [customActivityIndicatorView startAnimating];

    return customActivityIndicatorView;
}

问题是,当我设置[view setAlpha:0.5]时,它会将alpha设置为包括自定义活动指示符在内的所有子视图。 我想淡化超级视图而不是自定义活动指示器。

阅读所有这些链接;

https://developer.apple.com/library/ios/documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

UIView group opacity in single view heirachy

iOS controlling UIView alpha behaviour for subviews

还尝试设置layer.shouldRasterize和组不透明度的plist键,但没有任何帮助。 请帮忙!

2 个答案:

答案 0 :(得分:4)

您可以在超级视图和指示符之间放置一个半白色或半黑色的叠加层,而不是淡化整个超级视图。那将是视觉上的伎俩。

叠加层有alpha = 1.backgroundColor = [UIColor colorWithWhite:1. alpha:.5]

答案 1 :(得分:1)

只需将视图的背景颜色设置为半透明白色:

customActivityIndicatorView.backgroundColor = [UIColor colorWithWhite:1. alpha:.5];