关于UIView transform使用注意点

发布时间 2023-12-16 10:02:56作者: 夏风已过

先上代码

let tView = UIView()

override func viewDidLoad() { tView.backgroundColor = .orange view.addSubview(tView)
}

override func viewWillLayoutSubViews() {
tView.frame = CGRect(x: 10, y: 50, width: 100, height: 50)
}

 在页面下拉时tView跟随下拉

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    tView.transform = CGAffineTransformMakeTranslation(0, scrollView.contentOffset.y)
}

在某个时刻触发了 viewWillLayoutSubViews方法,重新设置了frame,导致视图错乱。

原因是设置frame时,transform没有清空,正确的方法是通过设置bounds和center来替代。

 

参考

https://www.ucloud.cn/yun/15387.html