【发布时间】:2016-09-22 23:23:56
【问题描述】:
我有一个 CGPoints 数组。我需要为数组中的每四个点设置一个个人标签,因此我需要以编程方式创建几个 NSTextField。我可以通过鼠标点击添加点,并且可以创建任意数量的点。这些点的标签必须全部激活才能同时向用户显示文本。我该怎么做?
(macOS、Xcode 7、Swift 2)
这是我的代码:
import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
@IBOutlet weak var window: NSWindow!
@IBOutlet weak var drawView: DrawView!
@IBOutlet weak var view: NSView!
let label = NSTextField(frame: NSMakeRect(0,0,100,50))
var pointsArray: [CGPoint] = []
func applicationWillUpdate(aNotification: NSNotification) {
label.backgroundColor = NSColor.clearColor()
label.bezeled = false
label.stringValue = "\(pointsArray.count/4)"
var multiple = (1...25).map { _ in label }
for index in 0..<(pointsArray.count/4) {
let point = CGPoint(x: pointsArray[index*4].x, y: pointsArray[index*4].y)
label.frame = CGRect(origin: point, size: CGSize(width: label.bounds.width, height: label.bounds.height))
let sticker = multiple[index]
view.addSubview(sticker)
}
}
}
在运行时我只看到一个标签,但我需要同时看到几个标签(每四个 CGPoint)。如果我有 100 个 CGPoints,我必须有 25 个标签。
【问题讨论】:
标签: swift2 nsview nstextfield addsubview cgpoint