Ios 如何变换uilabel使其x位置保持不变并缩放以减小字体大小
我实现了一个导航标题(uiview),它在向上滚动tablview时收缩,向下滚动时扩展。与个人资料页面中的Uber ios应用程序标题完全相同。我可以在从下到右上角滚动时更改标签位置,但如何在滚动时降低字体大小。如果我动态地改变字体大小,那就是颠簸。如果使用transform scale,则无法计算缩放标签以达到特定字体大小所需的量。当较大的uialabel x位置为15时,字体大小为24;当折叠时,x位置为45,字体大小为20。任何线索都将不胜感激Ios 如何变换uilabel使其x位置保持不变并缩放以减小字体大小,ios,swift,core-animation,Ios,Swift,Core Animation,我实现了一个导航标题(uiview),它在向上滚动tablview时收缩,向下滚动时扩展。与个人资料页面中的Uber ios应用程序标题完全相同。我可以在从下到右上角滚动时更改标签位置,但如何在滚动时降低字体大小。如果我动态地改变字体大小,那就是颠簸。如果使用transform scale,则无法计算缩放标签以达到特定字体大小所需的量。当较大的uialabel x位置为15时,字体大小为24;当折叠时,x位置为45,字体大小为20。任何线索都将不胜感激 func updateHeader() {
func updateHeader() {
let range = maximumHeaderHeight - minimumHeaderHeight
let openAmount = headerHeightConstraint.constant - maximumHeaderHeight
let percentage = openAmount / range
headerLabelLeadingConstraint.constant = labelXPositionOfAnimationHeader - (openAmount)}
查看收割台并设置6个限制条件(因此收割台的最大高度为100,最小高度为50)
class ViewController: UIViewController, UIScrollViewDelegate, UITableViewDelegate, UITableViewDataSource
{
@IBOutlet weak var tableView : UITableView? = nil
@IBOutlet weak var headerView : UIView? = nil
@IBOutlet weak var headerLabel : UILabel? = nil
@IBOutlet weak var headerHeightConstraint : NSLayoutConstraint? = nil
private var headerHeight : CGFloat = 100
private var topInset : CGFloat = 100 // TopInset == headerHeight
private var maxFontSize : CGFloat = 32
override func viewDidLoad()
{
super.viewDidLoad()
// TopInset == headerHeight
tableView?.contentInset = UIEdgeInsets(top: topInset, left: 0, bottom: 0, right: 0)
}
func numberOfSections(in tableView: UITableView) -> Int
{
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return 5
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100.0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = UITableViewCell()
cell.textLabel?.text = "\(indexPath.row)"
return cell
}
func scrollViewDidScroll(_ scrollView: UIScrollView)
{
let y = scrollView.contentOffset.y + topInset
headerHeightConstraint?.constant = headerHeight - y
let fontSize = (maxFontSize * (headerView?.frame.height ?? 0))/(headerHeight)
headerLabel?.font = UIFont.systemFont(ofSize: fontSize)
}
}
谢谢Sunil的回复。。。我也像你说的那样做了,但我希望标签从左下角转换到右上角。具体来说,我希望它从领先的15px转换到领先的45px,效果更小。我怎么做,好的,我知道了。我已经根据您的要求快速更新了项目,我已经添加了一些约束,将标签从左到右、从下到上移动。虽然我认为必须有一个更好的方法来做这件事,而不是玩弄约束。非常感谢Sunil。。。你救了我一天。对我来说完美的答案。。。