我希望我的 ViewController 和每个对象都显示为非活动状态,因为它全部变灰(有点像 UIAlertView 弹出窗口如何使背景中的所有内容变灰)。我不想手动将每个对象都变灰。有没有简单的方法来完成这项工作?
问问题
2213 次
5 回答
5
UIView *grayView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
grayView.backgroundColor = [UIColor colorWithWhite:0.5 alpha:0.5];
[self.view addSubview:grayView];
你可以弄乱白色和 alpha 值来得到你想要的东西,但这应该在你的视图控制器视图中的所有东西上都涂上灰色。
于 2013-10-31T15:43:20.160 回答
2
正如帕特里克·戈利(Patrick Goley)用他的好答案指出的那样 - 只需UIView
在原始视图上方放置一个 alpha 介于 0.5 - 0.75 之间的灰色即可。但是此方法将禁用所有用户与其子视图(按钮等)的交互。如果您想保留用户与元素的交互,但仍将视图标记为“非活动”,则应将放置在原始视图(要标记为非活动)上方的视图子类化,并在此子类中覆盖此方法:
- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event {
// Original "inactive" UIView will now respond to touch events if return NO:
return NO;
}
于 2013-10-31T15:51:13.133 回答
1
此代码还将涵盖任何父控制器: UINavigationController | UITabBarController。
不要忘记#import "AppDelegate.h"。
AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication]delegate];
UIView *grayView = [[[UIView alloc] initWithFrame:appDelegate.window.bounds] autorelease];
grayView.backgroundColor = [UIColor colorWithWhite:0.6 alpha:0.8];
[appDelegate.window addSubview:grayView];
于 2013-10-31T16:17:57.207 回答
0
是的:
设置视图的 alpha
[self.view setAlpha:0.5];
于 2013-10-31T15:37:06.223 回答
0
我更喜欢添加一个黑色背景的 UIView,然后降低 alpha。
UIView *grayView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
grayView.backgroundColor = [UIColor blackColor];
[grayView setAlpha:0.65];
然后不要忘记将子视图添加到主视图
[self.view addSubView:grayView];
于 2013-10-31T17:28:55.407 回答