import UIKit
// UILabel 文本在其 frame 内垂直顶部、居中、底部对齐
enum UUTextVerticalAlignment {
case top
case middle
case bottom
}
class UULabel: UILabel {
var verticalAlignment: UUTextVerticalAlignment = .middle {
didSet {
setNeedsDisplay()
}
}
override init(frame: CGRect) {
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func textRect(forBounds bounds: CGRect, limitedToNumberOfLines numberOfLines: Int) -> CGRect {
var textRect = super.textRect(forBounds: bounds, limitedToNumberOfLines: numberOfLines)
switch verticalAlignment {
case .top:
textRect.origin.y = bounds.origin.y
case .middle:
textRect.origin.y = bounds.origin.y + (bounds.size.height - textRect.size.height) / 2.0
case .bottom:
textRect.origin.y = bounds.origin.y + bounds.size.height - textRect.size.height
}
return textRect
}
override func drawText(in rect: CGRect) {
let actualRect = textRect(forBounds: rect, limitedToNumberOfLines: numberOfLines)
super.drawText(in: actualRect)
}
}
iOS 之 UILabel 文本在其 frame 内垂直顶部、居中、底部对齐
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- .h 文件 typedef NS_ENUM (NSInteger ,VerticalAlignment){ Ver...
- 前言: 正文:想实现UILabel居上对齐,居中对齐,居下对齐,如下效果: 在iOS中默认的UILabel中的文字...
- 系统中的UILabel对齐方式只有左、中、右对齐方式,有时候希望文本内容上部、中间和底部对齐,所以下面自定义一个继...