我想创建一个泛型类,当点击时,使元素变灰。
Facebook的应用程序是我想要实现的完美范例。点击时,所有链接和图像都变为灰色。
我只能猜测他们是UIButton的子类。
我已经制作了我的按钮的样式UIButtonTypeCustom
摆脱圆形边框。除此之外,我不知道如何使用灰色叠加层,因为我在文档中看不到这样的属性。
这很简单:
#define TAG_GRAYVIEW 5671263 // some random number
// add the gray overlay
UIView *grayView = [[UIView alloc] initWithFrame:button.bounds];
grayView.backgroundColor = [UIColor grayColor];
grayView.tag = TAG_GRAYVIEW;
[button addSubview:grayView];
// remove the gray overlay
UIView *grayView = [button viewWithTag:TAG_GRAYVIEW];
[grayView removeFromSuperview];
我认为你需要使用半透明的灰色图像PNG文件。然后,您需要在Highlighted
状态下设置按钮图像。
另请注意,Normal
State和Highlighted
State的图像都需要带有标题的图像。
一旦我们将图像设置为按钮,就不会显示btn.titleLabel.text
。
所以你可以在Normal
状态下拥有一个带有透明背景和标题的图像。还有一张带有标题的灰色图像,用于Highlighted
State。
以编程方式执行的代码是
[btn setImage:@"Transperant.png" forState:UIControlStateNormal];
[btn setImage:@"Grey.png" forState:UIControlStateHighlighted];
希望这对你有所帮助。
默认的UIButton
使用灰色突出显示屏遮住不透明内容。例如,当使用透明png时,只有包含非透明像素的部分在触摸时才会变灰。默认的UIButton
突出显示对子视图/子图层没有影响,并且仅对提供的图像有效。你在Facebook应用程序中看到的可能只是UIWebView的亮点,可能是使用css定制的。
要使用您自己的控件创建类似的东西(以防止UIWebView
的开销),您应该创建自己的UIControl
子类并使用透明的CALayer
突出显示触摸的内容。您甚至可以屏蔽CALayer
以仅突出显示实际内容,而不是矩形形状。
另请参阅creating custom controls for iOS by subclassing UIControl上的stackoverflow帖子。
尝试将按钮设置为这样的东西。 *请注意,我没有为此示例创建图像。
将按钮类型设置为自定义,然后在“状态配置”中选择“突出显示”,您需要将按钮的图像设置为半透明灰色图像。可能还有其他几种方法可以达到同样的效果,但这个方法应该很简单。