Подтвердить что ты не робот

Как применить tintColor к UIImage?

У меня есть UIImage, который является маленьким символом, который является черным. UIImage устанавливается в пользовательском подклассе UIButton, который у меня есть. Возможно ли, чтобы изображение применило к нему tintColor, поэтому вместо черного изображения оно меняет цвета на все, что есть tintColor?

Я просто пытаюсь избежать создания новых активов.

// here I want defaultImageName (that is black) to use the tintColor (that is white)
[self setImage:[UIImage imageNamed:defaultImageName] forState:UIControlStateNormal];
4b9b3361

Ответ 1

Если вы просто поддерживаете iOS 7, вы можете использовать tintColor и UIImageRenderingModeAlwaysTemplate

Эта статья охватывает это:

https://www.captechconsulting.com/blogs/ios-7-tutorial-series-tint-color-and-easy-app-theming

Если вам нужна поддержка более ранней версии, вы можете рассмотреть эту тему

Как бы я тонировал изображение программно на iPhone?

Ответ 2

Здесь, как я использую цвета оттенков и непрозрачности в IOS 9 с Swift -

//apply a color to an image
//ref - http://stackoverflow.com/questions/28427935/how-can-i-change-image-tintcolor
//ref - https://www.captechconsulting.com/blogs/ios-7-tutorial-series-tint-color-and-easy-app-theming
func getTintedImage() -> UIImageView {

    var image :UIImage
    var imageView :UIImageView

    image = UIImage(named: "someAsset")!
    let size  : CGSize = image.size
    let frame : CGRect = CGRectMake((UIScreen.mainScreen().bounds.width-86)/2, 600, size.width, size.height)

    let redCover : UIView = UIView(frame: frame)

    redCover.backgroundColor = UIColor.redColor()
    redCover.layer.opacity = 0.75

    imageView = UIImageView();
    imageView.image = image.imageWithRenderingMode(UIImageRenderingMode.Automatic)

    imageView.addSubview(redCover)

    return imageView
}

Ответ 3

Swift 4, решение для копирования и вставки

@IBOutlet weak var iconImageView: UIImageView!
iconImageView.image = UIImage(imageLiteralResourceName: "myImageName").withRenderingMode(.alwaysTemplate)
iconImageView.tintColor = UIColor.red