如何在 iOS Swift4 中滚动时增加/减少 UILabel 字体大小以及宽度和高度
Posted
技术标签:
【中文标题】如何在 iOS Swift4 中滚动时增加/减少 UILabel 字体大小以及宽度和高度【英文标题】:How to Increase/Decrease the UILabel font size along with width and height while scrolling in iOS Swift4 【发布时间】:2017-12-15 12:10:16 【问题描述】:我有一个 ViewController(MainVC),它包含一个标签 (myLabel) 和一个表格视图 (myTableView)。
每当我滚动 myTableView 时,我需要自动增加/减少 UILabel 字体大小以及宽度和高度。
例子:-
最初 myLabel.numberoflines = 2, myLabel.font = 30,宽度 = 100,高度 = 100。
现在,当我开始滚动 myTableView 时,它看起来像 myLabel.numberoflines = 1,myLabel.font = 20,宽度 = 200,高度 = 50。
在我的代码中 -UIViewController --UILabel(子视图1) --UITableView(subview2)
我已经尝试过这样的
func scrollViewDidScroll(_ scrollView: UIScrollView)
myLabel.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
XCode 9.2、Swift 4、ios 11.2
【问题讨论】:
试试这个myLabel.frame = CGRect(x: z, y: z, width: z, height: z)
myLabel.numberOfLines = x
您能告诉我们更多细节吗?就像你想如何触发转换一样。并且您希望标签在两种大小之间变化,或者在向下滚动 tableview 时保持增加,而在向上滚动时保持减小。
@RockBalbao 感谢您的回复。 myLabel.frame = CGRect(x: z, y: z, width: z, height: z) myLabel.numberOfLines = x. Z值如何计算?
@JsW 感谢您的回复。只需在我们向上滚动时减小 myLabel 字体大小和 numberoflines 为 1,在我们向下滚动时增加 myLabel 字体大小和 numberoflines 为 2。
【参考方案1】:
如果您已经初始化了表格视图,请将UITableViewDelegate
添加到您的控制器中。
它继承自UIScrollViewDelegate
。我们将在UIScrollViewDelegate
中使用两种方法。
extension ViewController: UITableViewDelegate
// mark where you begin to drag
func scrollViewWillBeginDragging(_ scrollView: UIScrollView)
dragOriginY = scrollView.contentOffset.y
func scrollViewDidScroll(_ scrollView: UIScrollView)
// compare your start point with the current offset.
if dragOriginY - scrollView.contentOffset.y < 0
// the drag direction is up
self.titleLabel.numberOfLines = 2
self.titleLabel.font = UIFont.systemFont(ofSize: 23)
else
// drag downwards
titleLabel.numberOfLines = 1
titleLabel.font = UIFont.systemFont(ofSize: 17)
【讨论】:
以上是关于如何在 iOS Swift4 中滚动时增加/减少 UILabel 字体大小以及宽度和高度的主要内容,如果未能解决你的问题,请参考以下文章
ios - 如何使用 Swift 4 延长位置跟踪时间 [重复]