swi*_*ode 5 uiviewcontroller uiimageview uigesturerecognizer ios
我有一个显示图片的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];
}
Run Code Online (Sandbox Code Playgroud)
在我pictureViewTapped,我有这个(现在):
- (void)pictureViewTapped {
NSLog(@"Picture view was tapped!");
}
Run Code Online (Sandbox Code Playgroud)
如何使UIImageView变暗?任何帮助表示赞赏.
Sha*_*med 17
最简单的方法是在QuartzCore框架中使用图层:
add:在项目设置中项目的QuartzCore.framework添加到.h文件:#import
为长按创建手势而不是按照您描述的行为进行点击:
self.longTap = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(darkenImage)];
[self.imageView setUserInteractionEnabled:YES];
[self.imageView addGestureRecognizer:self.longTap];
Run Code Online (Sandbox Code Playgroud)
手势激活时调用的方法:
-(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;
}
}
Run Code Online (Sandbox Code Playgroud)
就我而言,当将 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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12058 次 |
| 最近记录: |