3

我希望我的 ViewController 和每个对象都显示为非活动状态,因为它全部变灰(有点像 UIAlertView 弹出窗口如何使背景中的所有内容变灰)。我不想手动将每个对象都变灰。有没有简单的方法来完成这项工作?

4

5 回答 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 回答