为自定义活动指示器视图使 UIView 半透明
Posted
技术标签:
【中文标题】为自定义活动指示器视图使 UIView 半透明【英文标题】:Make UIView translucent for custom activity indicator view 【发布时间】:2014-06-10 06:06:30 【问题描述】:我已经为我的 ios 应用程序实现了一个自定义活动指示器视图,它运行流畅。要求是在自定义活动指示器动画时将superview的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 键,但没有任何帮助。 请帮忙!
【问题讨论】:
【参考方案1】:您可以在超级视图和指示器之间放置一个半白色或半黑色的叠加层,而不是淡化整个超级视图。这将在视觉上起到作用。
叠加层将具有 alpha = 1.
和 backgroundColor = [UIColor colorWithWhite:1. alpha:.5]
【讨论】:
是的,尝试这样做并且它可以工作,但它会禁用用户交互......其中要求指出用户可以在 customActivityIndicatorView 旋转时与视图交互。谢谢 覆盖不需要阻止用户交互。只需将其userInteractionEnabled
属性设置为 NO。【参考方案2】:
只需将视图的背景颜色设置为半透明的白色即可:
customActivityIndicatorView.backgroundColor = [UIColor colorWithWhite:1. alpha:.5];
【讨论】:
谢谢,但我希望超级视图(customActivityIndicatorView 添加为子视图)是半透明的,而不是 customActivityIndicatorView 的背景。以上是关于为自定义活动指示器视图使 UIView 半透明的主要内容,如果未能解决你的问题,请参考以下文章