从iOS 开发中过来的你,可能想先弄个 Hello world! 放在窗口上展示,但是你发现没有NSLabel 这个控件,那我们该怎么展示文本内容呢,这就需要 cocoa中的NSTextField,并将其editable 设置为false,下面来记录一下如何使用NSTextField
NSTextField 如何使用
let textField = NSTextField(frame: CGRect(x: 0, y: 0, width: width(), height: 100))
textField.isEditable = false ///是否可编辑
textField.isBordered = false ///是否显示边框
textField.backgroundColor = NSColor.orange ///背景色
textField.textColor = NSColor.white
textField.alignment = NSTextAlignment.center
textField.maximumNumberOfLines = 0
textField.stringValue = "Hello world!\n Hello world! \n Hello world!"
textField.font = NSFont.systemFont(ofSize: 36)
view.addSubview(textField)
width() 是获取view 宽度的function
func width() -> Int {
return Int(view.frame.width)
}
苹果开发中的文字对齐方式
iOS 和 Mac OS 已经使用统一的枚举类型
/* Values for NSTextAlignment */
public enum NSTextAlignment : UInt {
case left //左对齐
case right // 右对齐
case center // 居中
case justified // Fully-justified. The last line in a paragraph is natural-aligned.
case natural // Indicates the default alignment for script
}
*/
NSFont 如何使用
// 获取默认字体 ofSize:字体大小
let font = NSFont.systemFont(ofSize: 36)
//获取默认粗体字体 ofSize:字体大小
let font =NSFont.boldSystemFont(ofSize: 22)
//获取名字为 name 的字体 size: 字体大小
let font3 = NSFont(name: "Marker Felt", size: 30)
如果我们只是想展示一个Hello World一样的文字,还要写这么多的设置代码,是不是很麻烦.这里可以用一些技巧来简化比如Swift的 extension
extension NSTextField {
public class func label(frame frameRect: NSRect) -> NSTextField {
let label = NSTextField(frame: frameRect)
label.isEditable = false ///是否可编辑
label.isBordered = false ///是否显示边框
return label
}
}
这样我们就可以用这样的方法创建 一个"NSLabel"
let label = NSTextField.label(frame: CGRect(x: 0, y: 100, width: width(), height: 40))
label.stringValue = "This is a Label"
view.addSubview(label)
网友评论