简体   繁体   中英

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.

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

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)

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM