Sử dụng mã những gì tôi làm khi kích thước hình ảnh quá lớn, tôi đổi kích thước UIImage
trước khi hiển thị/thiết lập trên UIControl
. Tôi có tiện ích mở rộng này trên UIImage
giúp tái tỷ lệ hình ảnh.
// 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
}
}
Sử dụng này sẽ trông như thế này
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(_:)))
CẬP NHẬT: Đây là những gì nó sẽ trông giống như sử dụng @IBDesignable và @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))
}
}
}
Nguồn
2017-10-16 03:57:56
Vì vậy, không có cách nào để làm điều này trong chính kịch bản? –
Đoán của tôi là tạo một lớp con 'IBDesignable'' UIBarButtonItem' có một số thuộc tính 'IBInspectable' có thể giúp tái tỷ lệ hình ảnh. –
Sử dụng 'IBDesignable' hoạt động hoàn hảo. Cám ơn rất nhiều. Sẽ giải thưởng tiền thưởng vào cuối. –