簡體   English   中英

突出顯示(點擊)時如何使UIImageView變暗?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM