美文网首页
macOS 开发之-NSTextField 文本展示

macOS 开发之-NSTextField 文本展示

作者: 魔都兰陵王 | 来源:发表于2018-12-17 14:40 被阅读24次

    从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)
    

    相关文章

      网友评论

          本文标题:macOS 开发之-NSTextField 文本展示

          本文链接:https://www.haomeiwen.com/subject/lviqkqtx.html