【问题标题】:Why is UIBarButtonItem image always fuzzy/blurry/pixelated为什么 UIBarButtonItem 图像总是模糊/模糊/像素化
【发布时间】:2014-09-15 17:37:19
【问题描述】:

这是我当前的代码:

var reply = UIBarButtonItem(image: UIImage(named: "reply"), style: UIBarButtonItemStyle.Plain, target: self, action: Selector("reply:"))
self.navigationItem.rightBarButtonItem = reply

右上角的按钮总是模糊的。这是 iPhone4s 设备的屏幕截图,因此与视网膜无关。

我尝试了从 30x30 到 512x512 的不同图像尺寸,并使用 customView 添加图像。这些方法都没有解决问题。

提前致谢。

【问题讨论】:

    标签: xcode swift uibutton uibarbuttonitem uinavigationitem


    【解决方案1】:

    我已经用这个方法解决了:

    var replyBtn = UIButton(frame: CGRect(x: 0, y: 0, width: 30, height: 30))
    replyBtn.setImage(UIImage(named: "reply"), forState: UIControlState.Normal)
    replyBtn.addTarget(self.navigationController, action: Selector("reply:"), forControlEvents:  UIControlEvents.TouchUpInside)
    var item = UIBarButtonItem(customView: replyBtn)
    self.navigationItem.rightBarButtonItem = item
    

    它使用完全相同的图像显示一个非常清晰的按钮。

    【讨论】:

    • 如果不适用于 Swift 2 和 xCode 6.4 替换最后一行 //self.navigationItem.rightBarButtonItem = item 与 self.navigationController?.navigationBar.topItem?.rightBarButtonItem = item
    【解决方案2】:

    根据 IOS 人机界面指南,图标应为 22x22 看看这里的文档: https://developer.apple.com/library/ios/documentation/UserExperience/Conceptual/MobileHIG/BarIcons.html

    【讨论】:

      【解决方案3】:

      试试这个:

      func createBarButton(image: String, size: CGSize, offset: (x: CGFloat, y: CGFloat) = (0,0), hightlightable: Bool = true, action: Selector) -> UIBarButtonItem {
          let btn = UIButton(type: .custom)
          let img = UIImage(named: image)
      
          btn.setBackgroundImage(img, for: .normal)
          btn.addTarget(self, action: action, for: .touchUpInside)
          btn.frame = CGRect(x: offset.x, y: offset.y, width: size.width, height: size.height)
          btn.adjustsImageWhenHighlighted = hightlightable
          let view = UIView(frame: CGRect(x: 0, y: 0, width: size.width, height: size.height))
      //        view.bounds = view.bounds.offsetBy(dx: offset.x, dy: offset.y)
          view.addSubview(btn)
          let barButton = UIBarButtonItem(customView: view)
      
          return barButton
      }
      
      self.navigationItem.rightBarButtonItem = createBarButton(image: "YOUR_IMAGE",
           size: CGSize(width: 35, height: 35),
           offset: (x: -10, y: 0),
           action: #selector(showXY))
      

      【讨论】:

        猜你喜欢
        • 2023-03-08
        • 1970-01-01
        • 2022-12-17
        • 2018-02-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-08
        相关资源
        最近更新 更多