使用代码当图像尺寸太大时,我会调整UIImage
,然后在UIControl
上进行渲染/设置。我在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'完美运作。非常感谢。最终会奖励赏金。 –