コードを使用画像サイズが大きすぎる場合、UIControl
のレンダリング/設定の前にUIImage
のサイズを変更します。私はUIImage
にこの拡張子を付けて、画像の再スケールを助けます。
これを使用して
// MARK: - Used to scale UIImages
extension UIImage {
func scaleTo(_ newSize: CGSize) -> UIImage {
UIGraphicsBeginImageContextWithOptions(newSize, false, 0.0)
self.draw(in: CGRect(x: 0, y: 0, width: newSize.width, height: newSize.height))
let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return newImage
}
}
この
let defaultImage = UIImage(named: "someimagenamehere")?
.scaleTo(CGSize(width: 40, height: 40))
self.navigationItem.leftBarButtonItem = UIBarButtonItem(
image: defaultImage,
style: .plain,
target: self,
action: #selector(self.someselectorhere(_:)))
UPDATEのようになります。これは、それが@IBDesignableを使用してどのようになるかであると@IBInspectable
@IBDesignable
class CustomBarButtonItem: UIBarButtonItem {
@IBInspectable
var scaledHeight: CGFloat = 0 {
didSet {
self.image = self.image?.scaleTo(CGSize(width: self.scaledHeight, height: self.scaledWidth))
}
}
@IBInspectable
var scaledWidth: CGFloat = 0 {
didSet {
self.image = self.image?.scaleTo(CGSize(width: self.scaledHeight, height: self.scaledWidth))
}
}
}
そうする方法はありませんこれはストーリーボード自体の中で? –
私は、 'IBDesignable'' UIBarButtonItem'サブクラスを作成することになります。サブクラスには' IBInspectable'プロパティがあり、イメージの再スケーリングに役立ちます。 –
'IBDesignable'を使うと完全に動作しました。本当にありがとう。最後に賞金を授与します。 –