我的应用的每个屏幕都有一个共同的色调。它不是背景。它是一个填满整个屏幕的图案,它是所有视图的顶部。您可以在同一屏幕内看到图案从一个视图连续流动到另一个视图。它既不模糊其他元素也不参与事件处理。
我尝试在我的ViewController中使用此代码实现它。
UIColor* texture = [UIColor colorWithPatternImage:[UIImage imageNamed:@"Texture.png"]];
UIView* tintView = [[UIView alloc] initWithFrame:self.view.bounds];
[tintView setBackgroundColor:texture];
[tintView setAlpha:0.5];
[self.view addSubview:tintView];
但它没有传递给它背后的观点。
tintView
不应参与任何事件处理。相反,它应该让它背后的其他元素处理事件,就像他们正常做的那样。
其他方法是将其设置为UIViewController的view
属性的背景,并为view
的所有其他子视图设置公共alpha以显示后面的模式。在大多数情况下,这将是多余的。
有更好的方法吗?
答案 0 :(得分:0)
使你的tintView成为UIView
的子类并实现hitTest:withEvent:
方法,返回nil。这将使您的视图对触摸透明。或者将userInteractionEnabled
设置为NO
。
答案 1 :(得分:0)
使用background color
Textured image
UIImage *bgimg = [UIImage imageNamed:@"Texture.png"];
self.view.backgroundColor = [UIColor colorWithPatternImage:bgimg];