突出显示(点击)时,如何使UIImageView变暗?
我有一个显示图片的UIImageView。点击并按住时,只要用户将手指放在图像视图上,就会使其变暗。基本上,我希望它像UIButton一样行事。突出显示(点击)时,如何使UIImageView变暗?
我现在已经将其与UIGestureRecognizer做到这一点:
- (void)viewDidLoad
{
[super viewDidLoad];
UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(pictureViewTapped)];
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
[self.pictureImageView addGestureRecognizer:singleTap];
[self.pictureImageView setUserInteractionEnabled:YES];
}
,并在我的pictureViewTapped
,我(现在)有这样的:
- (void)pictureViewTapped {
NSLog(@"Picture view was tapped!");
}
如何使暗的UIImageView?任何帮助表示赞赏。
最简单的方法是在QuartzCore框架使用层:
附加:QuartzCore.framework在您的项目设置项目 添加到.h文件中:#进口
为长按,而不是创造的姿态如你描述抽头作为行为:称为
self.longTap = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(darkenImage)];
[self.imageView setUserInteractionEnabled:YES];
[self.imageView addGestureRecognizer:self.longTap];
方法当手势活性:
-(void)darkenImage {
switch (self.longTap.state) {
case UIGestureRecognizerStateBegan: // object pressed
case UIGestureRecognizerStateChanged:
[self.imageView.layer setBackgroundColor:[UIColor blackColor].CGColor];
[self.imageView.layer setOpacity:0.9];
break;
case UIGestureRecognizerStateEnded: // object released
[self.imageView.layer setOpacity:1.0];
break;
default: // unknown tap
NSLog(@"%i", self.longTap.state);
break;
}
}
工作,谢谢! – swiftcode 2013-05-13 10:39:11
'[self.imageView.layer setBackgroundColor:[UIColor blackColor] .CGColor]; [self.imageView.layer setOpacity:0.9];' 是意图使背景将显示通过当您将整个imageViews不透明度为0.9?背景是否应该不受不透明度变化的影响?总之,这不适合我。 :( – Toydor 2014-12-17 11:53:59
@Toydor我同意,我建议未来的读者尝试使用'.tintColor'属性代替。 – 2018-02-16 00:44:22
斯威夫特 - 解决方案:
@IBOutlet weak var imageViewExport: UIImageView!
var tapGestureExport = UILongPressGestureRecognizer()
override func viewDidLoad() {
super.viewDidLoad()
imageViewExport.userInteractionEnabled = true
tapGestureExport = UILongPressGestureRecognizer(target: self, action: "tapGestureExportAction:")
imageViewExport.addGestureRecognizer(tapGestureExport)
}
func tapGestureExportAction(sender: UITapGestureRecognizer) {
switch(tapGestureExport.state) {
case UIGestureRecognizerState.Began,
UIGestureRecognizerState.Changed:
imageViewExport.backgroundColor = UIColor.blackColor()
imageViewExport.layer.opacity = 0.9
case UIGestureRecognizerState.Ended: // released
imageViewExport.layer.opacity = 1.0
default: break // unknown tap
}
}
在我的情况下,设置的ImageView图层不透明度改为0.9时,背景将显示出来。
我使用使用新图层的解决方案。
let coverLayer = CALayer()
coverLayer.frame = imageView.bounds;
coverLayer.backgroundColor = UIColor.blackColor().CGColor
coverLayer.opacity = 0.0
imageView.layer.addSublayer(coverLayer)
// when tapped
coverLayer.opacity = 0.1
如果您想表现得像一个按钮,为什么不使用按钮? – danypata 2013-05-12 18:49:13