我的Xcode项目中的图像资源文件中有一个PDF文件。我正在尝试创建一个使用该PDF图像的条形按钮项。但每当我在Interface Builder中将图像属性设置为图像时,它都会占用我的大部分标签栏并删除标题。
我有一个左栏按钮项目,系统项目停止。所以它看起来像一个X
图标。我想用我的设置PDF图像在右侧做同样的事情。
有没有办法在Interface Builder中修复此大小调整问题?如果没有,我怎么能在代码中解决这个问题?
使用Code我在图像尺寸太大时所做的事情,我在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(_:)))
更新:这就是使用@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))
}
}
}