Alexander Khitev
Alexander Khitev

Reputation: 6861

How to use Light UIUserInterfaceStyle image version in Dark Mode?

I use image, this image has two versions for light and dark UIUserInterfaceStyle, but I need to use the image light version in one UIViewController when Dark Mode is on. I know I can use tintColor, but I want to find out if other ways to do this.

Upvotes: 3

Views: 2386

Answers (2)

Frank Rupprecht
Frank Rupprecht

Reputation: 10493

Subramanian's answer is perfect for this use case.

However, I you really need just the UIImage in a different style, you can do the following:

// create a trait collection with `light` interface style
let traitCollection = UITraitCollection(userInterfaceStyle: .light)

// If you have an existing image, you can change it's style like this: 
let lightImage = image.withConfiguration(traitCollection.imageConfiguration)

// Or if you load the image by name, you can do this:
let lightImage = UIImage(named: "imageName", in: nil, compatibleWith: traitCollection)

Upvotes: 7

Subramanian Mariappan
Subramanian Mariappan

Reputation: 3886

You can opt out of dark mode for a particular view controller by setting the overrideUserInterfaceStyle property in viewDidLoad function. Sample snippet as follows.

override func viewDidLoad() {
        super.viewDidLoad()

        // Always adopt a light interface style.    
        overrideUserInterfaceStyle = .light
    }

To opt out dark mode for your image view you can set as follows.

imageview. overrideUserInterfaceStyle = .light

You can check out further about opt out of dark mode from the link below. Hope it helps.

https://developer.apple.com/documentation/xcode/supporting_dark_mode_in_your_interface/choosing_a_specific_interface_style_for_your_ios_app

Upvotes: 1

Related Questions