我有一个ViewController(MainVC),它拥有一个标签(myLabel)和一个tableview(myTableView)。
每当我滚动myTableView然后我需要自动增加/减少UILabel字体大小以及宽度和高度。
例:-
最初myLabel.numberoflines = 2,myLabel.font = 30,Width = 100,Height = 100。
现在,当我开始滚动myTableView时,它看起来像myLabel.numberoflines = 1,myLabel.font = 20,Width = 200,Height = 50。
在我的代码中像-UIViewController --UILabel(subview1)--UITableView(subview2)
我已经尝过这样的了
func scrollViewDidScroll(_ scrollView: UIScrollView) {
myLabel.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
}
XCode 9.2,Swift 4,iOS 11.2
如果您已经初始化了tableview,请将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)
}
}
}