2017-10-10 17 views
5

Tôi có tệp PDF trong tệp nội dung hình ảnh trong dự án Xcode của mình. Tôi đang cố tạo mục nút thanh sử dụng hình ảnh PDF đó. Nhưng bất cứ khi nào tôi đặt thuộc tính hình ảnh trong Trình tạo giao diện thành hình ảnh, nó chiếm hầu hết thanh tab của tôi và xóa tiêu đề.Xcode Sử dụng hình ảnh PDF trong thanh Nút Kích thước mục Quá lớn

Tôi có mục nút thanh bên trái có dừng mục hệ thống. Vì vậy, nó trông giống như một biểu tượng X. Tôi muốn làm điều tương tự ở bên phải với các thiết lập của tôi PDF hình ảnh tôi có.

Có cách nào để khắc phục sự cố định cỡ này trong Bộ dựng giao diện không? Nếu không làm thế nào tôi có thể sửa lỗi này trong mã?

Trả lời

6

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)) 
     } 
    } 
} 
+0

Vì vậy, không có cách nào để làm điều này trong chính kịch bản? –

+0

Đ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. –

+1

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. –

Các vấn đề liên quan