UILable.h

import Foundation
import UIKit

//
//  UILabel.h
//  UIKit
//
//  Copyright (c) 2006-2016 Apple Inc. All rights reserved.
//

@available(iOS 2.0, *)
public class UILabel : UIView, NSCoding, UIContentSizeCategoryAdjusting {

    // lable 显示的 文本信息
    public var text: String? // default is nil

    // 文本的字体
    public var font: UIFont! // default is nil (system font 17 plain)

    // 文本的颜色
    public var textColor: UIColor! // default is nil (text draws black)

    // 文本的阴影
    public var shadowColor: UIColor? // default is nil (no shadow)

    // 文本的阴影偏移
    public var shadowOffset: CGSize // default is CGSizeMake(0, -1) -- a top shadow

    // 文本的排列 
    public var textAlignment: NSTextAlignment // default is NSTextAlignmentNatural (before iOS 9, the default was NSTextAlignmentLeft)

    // 文本的换行模式 
    public var lineBreakMode: NSLineBreakMode // default is NSLineBreakByTruncatingTail. used for single and multiple lines of text

    
    // the underlying attributed string drawn by the label, if set, the label ignores the properties above.
    @available(iOS 6.0, *)
    // 属性文本 ( TextKit 的主要内容 )
    @NSCopying public var attributedText: AttributedString? // default is nil

    
    // the 'highlight' property is used by subclasses for such things as pressed states. it's useful to make it part of the base class as a user property
    
   // 高亮的文本颜色
    public var highlightedTextColor: UIColor? // default is nil

    // 是否高亮
    public var isHighlighted: Bool // default is NO

    // 是否响应用户事件(no ,用户事件将从事件队列中移除)
    public var isUserInteractionEnabled: Bool // default is NO

    public var isEnabled: Bool // default is YES. changes how the label is drawn

    
    // this determines the number of lines to draw and what to do when sizeToFit is called. default value is 1 (single line). A value of 0 means no limit
    // if the height of the text reaches the # of lines or the height of the view is less than the # of lines allowed, the text will be
    // truncated using the line break mode.
    // 文本的行数
    public var numberOfLines: Int

    
    // these next 3 property allow the label to be autosized to fit a certain width by scaling the font size(s) by a scaling factor >= the minimum scaling factor
    // and to specify how the text baseline moves when it needs to shrink the font.
    
    public var adjustsFontSizeToFitWidth: Bool // default is NO

    public var baselineAdjustment: UIBaselineAdjustment // default is UIBaselineAdjustmentAlignBaselines

    @available(iOS 6.0, *)
    public var minimumScaleFactor: CGFloat // default is 0.0

    
    // Tightens inter-character spacing in attempt to fit lines wider than the available space if the line break mode is one of the truncation modes before starting to truncate.
    // The maximum amount of tightening performed is determined by the system based on contexts such as font, line width, etc.
    @available(iOS 9.0, *)
    public var allowsDefaultTighteningForTruncation: Bool // default is NO

    
    // override points. can adjust rect before calling super.
    // label has default content mode of UIViewContentModeRedraw
    
    public func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect



    // 在指定的范围内进行文本绘制(或者绘制阴影)
    // 这个方法不能被直接调用,只有当子类需要修改默认的文本绘制行为的时候,才在子类中重写,这个方法只能被子类重写,
    public func drawText(in rect: CGRect)

    
    // Support for constraint-based layout (auto layout)  支持自动布局
    // If nonzero, this is used when determining -intrinsicContentSize for multiline labels
    // 如果为非零值,在多行文本下调用  -intrinsicContentSize 方法就会被调用
    @available(iOS 6.0, *)
   // 优先的多行文本布局最大宽度
   // 当使用 约束进行文本布局的时候,这个属性就会影响文本的尺寸,如果文本的扩展超过这个属性指定的值,
   // 文本就会另起一行,并增加 文本的高度 
    public var preferredMaxLayoutWidth: CGFloat
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,189评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,577评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,857评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,703评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,705评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,620评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,995评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,656评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,898评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,639评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,720评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,395评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,982评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,953评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,195评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,907评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,472评论 2 342

推荐阅读更多精彩内容