カスタムキーボードを作成していますが、シフトアイコンの画像をシフトボタンの中央に配置する必要があります。画像は100px x 100pxです。
ただし、ポートレートのボタンフレームは36pt x 38pt
で、ランドスケープのボタンフレームは68pt x 32pt
です。ボタン画像の差し込みプロパティを使用して画像を中央に配置しようとしました。ただし、そうではありません。
私は自分で試して、画像の端のインセットを(25,25,25,25)
に設定しました。画像は両方のサイズで中央にあります。ただし、アイコンが小さくなりすぎて表示されなくなります。
shiftButton.setImage(UIImage(named: "shift"), forState: .Normal)
shiftButton.imageEdgeInsets = UIEdgeInsetsMake(0,0,0,0)
ボタンをプログラムで作成しています。そして、アスペクト比を維持したままスケーリングするためのボタン、つまり1:1
が必要です。その最大幅または高さは、常にボタンの高さ自体に関連付けられています。画像の幅/高さは、ボタンの高さの最大値でなければなりません。また、アイコンを歪ませるために何らかの方法で伸びてはいけません。ただし、ボタン自体は伸縮できます。
ボタンフレームに合わせて画像を拡大縮小する必要がありますが、アスペクト比は維持します。また、縮小または拡大することもできますが、常に1:1のアスペクト比を維持する必要があります。
この問題を解決するための提案はありますか?
ついに解決策が生まれました。 UIButton内の画像のコンテンツモードを設定する必要があります。
解決策は、contentMode
のImage
とともにボタン内で前景画像を使用している場合、contentMode
のUIButton
を更新することです。
shiftButton.contentMode = .Center
shiftButton.imageView?.contentMode = .ScaleAspectFit
ボタンのコンテンツモードをCenter
に設定します。
shiftButton.contentMode = .Center
ストーリーボードを使用している場合は、ボタンのタイトルに何も設定されていないことを再確認してください。