相关疑难解决方法(0)

AutoLayout链接两个UILabel以具有相同的字体大小

我有两个UILabel排在一起,左右调整,所以它看起来像下面.

 |-Some text left adjusted----------some other text right adjusted-|
Run Code Online (Sandbox Code Playgroud)

两个标签都有adjustsFontSizeToFitWidth = YES,并使用以下约束相互链接

[NSLayoutConstraint constraintWithItem:_rightLabel
                    attribute:NSLayoutAttributeLeft
                    relatedBy:NSLayoutRelationGreaterThanOrEqual
                    toItem:_leftLabel
                    attribute:NSLayoutAttributeRight
                    multiplier:1
                    constant:10]
Run Code Online (Sandbox Code Playgroud)

因此,它们占用尽可能多的空间,如果没有足够的空间用于原始字体大小,则会因为adjustsFontSizeToFitWidth而降低,因此不会截断任何文本.

我的问题是,当由于长文本需要降低其字体大小时,我希望另一个标签也降低其字体大小,以便两者都是相同的大小而不是一个大小可能是另一个大小的两倍.我想约束字体大小以匹配但唉我不知道如何这样,任何想法?

uilabel ios autolayout

23
推荐指数
2
解决办法
6869
查看次数

什么时候调整.FontSizeToFitWidth或boundingRectWithSize更改context.actualScaleFactor?

NSStringDrawingContext的actualScaleFactor何时更改?

文件说:

"如果在minimumScaleFactor属性中指定了自定义值,则在绘制完成时,此属性包含用于绘制字符串的实际比例因子值."

我的代码:

myButton.titleLabel!.font = UIFont(name: "AmericanTypewriter-Bold", size: 40)
myButton.titleLabel?.adjustsFontSizeToFitWidth = true
myButton.setTitle("\(textString)", forState: .Normal)

let attributes = [NSFontAttributeName : myButton.titleLabel!.font]
let attributedString = NSMutableAttributedString(string:textString, attributes:attributes)

let context = NSStringDrawingContext()
context.minimumScaleFactor = myButton.titleLabel!.minimumScaleFactor

print("context: \(context.actualScaleFactor)")

let resultingRect = attributedString.boundingRectWithSize(myButton.titleLabel!.bounds.size, options: .UsesLineFragmentOrigin, context: context)

print("actual context after drawing: \(context.actualScaleFactor)")

//want to get the font size after adjustsFontSizeToFitWidth has done its magic:      
//let actualFontSize = myButton.titleLabel!.font.pointSize * context.actualScaleFactor
Run Code Online (Sandbox Code Playgroud)

适合不缩小的文本的控制台日志和调整为适合标签宽度的较长文本都是相同的:

context: 0.0
actual context after drawing: 1.0
Run Code Online (Sandbox Code Playgroud)

知道在文本大小适合标签后,从上下文中获取真正的scaleFactor的步骤是什么?

font-size uilabel ios drawingcontext swift

6
推荐指数
1
解决办法
1130
查看次数

标签 统计

ios ×2

uilabel ×2

autolayout ×1

drawingcontext ×1

font-size ×1

swift ×1