提问人:Hercule 提问时间:10/21/2023 最后编辑:HangarRashHercule 更新时间:10/21/2023 访问量:31
如何在 Cocoa 中添加一个矩形以查看以边框图像
How to add a rectangle to view in Cocoa to border an image
问:
我正在尝试在 Swift 中添加一个矩形来为图像创建框架。边框需要为红色,并略微覆盖图像的边缘。NSView
这是我到目前为止拥有的代码:
let artworkView : NSImageView = NSImageView(frame: artworkRectangle)
artworkView.image = artwork
artworkView.rotate(byDegrees: 270)
myView.addSubview(artworkView)
let borderWidth : CGFloat = 3
let offset : CGFloat = borderWidth / 2
let artworkBorderRect : NSRect = NSRect(x: artworkRectangle.minX - offset, y: artworkRectangle.minY - offset, width: artworkRectangle.width + borderWidth, height: artworkRectangle.height + borderWidth)
let artworkBorderField = NSTextField(frame: artworkBorderRect)
artworkBorderField.drawsBackground = false
artworkBorderField.isBordered = true
artworkBorderField.textColor = NSColor.red
myView.addSubview(artworkBorderField)
我正在使用 这很容易添加到视图中,并且我无法弄清楚如何将视图添加到视图中。但是,结果是边框不透明,宽度不足。关于如何向此边框添加描边颜色和宽度的任何建议?NSTextField
NSView
NSRect
答:
0赞
Duncan C
10/21/2023
#1
向视图添加边框的最简单方法是使用核心动画。
在 MacOS 上,将自定义视图设置为 true。wantsLayer
然后,可以设置为非零值。您还可以设置视图图层的 、 和视图支持的各种其他属性(有关详细信息,请参阅有关 CALayer 的文档。view.layer.boderwidth
borderColor
cornerRadius
CALayer
我使用 Storybards 创建了一个简单的演示应用程序,将通用 NSView 添加到视图控制器的场景中,并为视图控制器提供了 IBOutlet“customView”。我还在视图中添加了一个标签,只是为了它。
然后,我在视图控制器的 viewDidLoad 中添加了以下代码:
override func viewDidLoad() {
super.viewDidLoad()
customView.wantsLayer = true // You need this line.
guard let layer = customView.layer else { return }
layer.borderWidth = 2
layer.borderColor = NSColor.blue.cgColor
layer.cornerRadius = 10
这将产生一个如下所示的窗口:
如果你想要一个框架,你可以直接对 ,无论你是在 Storyboard 还是在代码中创建 ,都可以直接执行我上面概述的所有操作。NSImageView
NSImageView
NSImageView
评论
0赞
Hercule
10/21/2023
添加了以下内容,但没有边框?artworkView.wantsLayer = true guard let layer = artworkView.layer else { return } layer.borderWidth = 3 layer.borderColor = NSColor.blue.cgColor labelPageView.addSubview(artworkView)
0赞
Duncan C
10/21/2023
这应该有效。尝试将映像视图放在容器 NSView 中,并将层代码应用于容器视图。
评论
NSBox