【问题标题】:How to set a background image in cocoa NSView如何在可可 NSView 中设置背景图像
【发布时间】:2017-04-12 20:45:01
【问题描述】:

关于如何在 iOS 中将背景图像设置为 UIView 的问题,我找到了几个答案。 但是,我无法为 macOS 尤其是可可解决这个问题。 我试图设置类似的东西

let bgImage = NSImage(named: "streaks")
let pattern = NSColor(patternImage: bgImage!)
self.view.layer?.background = pattern as! CGColor // this will fail on runtime

【问题讨论】:

    标签: swift image cocoa nsview


    【解决方案1】:

    UIView 不同,NSView 默认不支持层,您必须启用它。

    self.view.wantsLayer = true
    

    然后创建图像并将其分配给图层的contents 属性。

    let image = NSImage(named: "streaks")
    self.view.layer!.contents = image
    

    【讨论】:

    • 嗨@vadian,是的,这正是我想要的。谢谢您是否也知道如何将其设置为平铺图案图像?
    • 我不熟悉图案图像,但是由于您正在处理颜色,请写self.view.layer!.backgroundColor = pattern.cgColor
    • 是的,完成了这项工作。然而,没有必要启用这些层。即使没有将 self.view.wantsLayer 设置为 true,这也有效。感谢您的帮助
    【解决方案2】:

    在 Swift 4 中

        self.view.wantsLayer = true
        let image = NSImage(named: NSImage.Name(rawValue: "streaks"))
        self.view.layer!.contents = image
    

    【讨论】:

      【解决方案3】:
      class CustomImageView: NSView { 
      
          open override func makeBackingLayer() -> CALayer {
              let backingLayer = super.makeBackingLayer()
              let image = NSImage(named: NSImage.Name(rawValue: "imageName"))
              backingLayer.contents = image
              return backingLayer
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 2013-08-02
        • 1970-01-01
        • 2011-11-24
        • 2010-10-06
        • 2018-01-08
        • 1970-01-01
        • 2022-10-07
        • 1970-01-01
        相关资源
        最近更新 更多