János
János

Reputation: 35090

Change image in UIImageView when row is selected?

This is how item looks when it is selected.

enter image description here

Normally row has black background, and icon has white foreground. But selecting a row will made background semi white. Is it a way to change image to opposite color, or use a different image in imageView when imageView's row is selected?

Upvotes: 2

Views: 1707

Answers (3)

Krunal
Krunal

Reputation: 79726

Yes, UIImageView color can be set, using highlighted image. It has two types of properties to images. Normal and Highlighted image.
This options are available in attribute inspector in Interface file (storyboard/XIB).
Another option is available for vector images, where you can set tintColor for template types of image asset.

Swift You can also set both properties programatically.

let imageView = UIImageView(<set your initialiser>)
imageView.image = //Your normal image
imageView.highlightedImage = //You highligted image

Upon your tableview row selection status, change state of image from normal to highlighted and vice-versa. imageView.isHighlighted = true/false

 func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
    imageView.isHighlighted = true
}

func tableView(_ tableView: UITableView, didDeselectRowAt indexPath: IndexPath) {
    imageView.isHighlighted = false
}


enter image description here

Upvotes: 1

dmorrow
dmorrow

Reputation: 5674

Using @NSDmitry's example, you need to override setSelected(_ selected: Bool, animated: Bool) on the UITableViewCell and set the tintColor of the whole contentView or just the imageView

Upvotes: 1

NSDmitry
NSDmitry

Reputation: 450

There is already answer to this question Changing UIImage color

You should declare your image as the mask(.alwaysTemplate) then you can change tintColor for any UIColor.

Upvotes: 0

Related Questions