Xcode 9.2を使用した場合、上記の解決策はどれも私が探していたものに対して機能しませんでした。
ストーリーボード内の元のレンダリングモードの設定.normal
と.selected
UIControlState
画像を可能にするソリューションを探していましたが、Swiftファイル内では、画像名に関する文字列リテラルは存在しません。
基本的に、コード内では、ストーリーボード内で.normal
ステート用に設定したイメージを取得し、それを.alwaysOriginal
(ステートと同じ.selected
)として再レンダリングします。次に、そのイメージを設定します(元のイメージとしてレンダリングされ、影響を受けません)色合い)の関連する状態(.normal
および.selected
)UIButton
。
ここにあります:
// Get your .normal image (you set via your storyboard) and render it as original
let unselectedImage = yourButton.image(for: .normal)?.withRenderingMode(.alwaysOriginal)
// Set your normal image but this time rendered as original
yourButton.setImage(unselectedImage, for: .normal)
// Same for selected state
let selectedImage = yourButton.image(for: .selected)?.withRenderingMode(.alwaysOriginal)
yourButton.setImage(selectedImage, for: .selected)
このようにして、ボタンの画像の状態を設定できます。画像の名前が変更されても、コードには影響しません。