[英]How do I make a UIImageView darker when highlighted (tapped)?
我有一個顯示圖片的UIImageView。 當點擊並保持時,只要用戶將手指放在圖像視圖上,我就希望它變暗。 基本上,我希望它像UIButton一樣。
我目前使用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框架中使用圖層:
add:在項目設置中項目的QuartzCore.framework添加到.h文件:#import
為長按創建手勢而不是按照您描述的行為進行點擊:
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;
}
}
在我的例子中,當將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
斯威夫特 - 解決方案:
@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
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.