我已经为我的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设置为包括自定义活动指示符在内的所有子视图。 我想淡化超级视图而不是自定义活动指示器。
阅读所有这些链接;
UIView group opacity in single view heirachy
iOS controlling UIView alpha behaviour for subviews
还尝试设置layer.shouldRasterize和组不透明度的plist键,但没有任何帮助。 请帮忙!
答案 0 :(得分:4)
您可以在超级视图和指示符之间放置一个半白色或半黑色的叠加层,而不是淡化整个超级视图。那将是视觉上的伎俩。
叠加层有alpha = 1.
和backgroundColor = [UIColor colorWithWhite:1. alpha:.5]
答案 1 :(得分:1)
只需将视图的背景颜色设置为半透明白色:
customActivityIndicatorView.backgroundColor = [UIColor colorWithWhite:1. alpha:.5];