ios - 修复 UIView 元素以避免更改 "scrollViewDidScroll"函数中的尺寸

标签 ios swift uiscrollview cgaffinetransform uiscrollviewdelegate

我创建了一个 UIScrollView 来在另一个带有标题的 UIViewController 中显示它。在我的 scrollViewDidScroll() 中,我有一些降低标题高度的代码。但是当它执行时,标题 View 中的所有元素(标签)都会发生变化。有什么办法可以保持它们的尺寸固定吗? enter image description here

我的scrollViewDidScroll()函数在这里:

func scrollViewDidScroll(_ scrollView: UIScrollView) {

        var labelAlpha = 4 * scrollView.contentOffset.y / scrollView.frame.height
        labelAlpha = max(0, labelAlpha)
        labelAlpha = min(1, labelAlpha)
        let parent = self.parent as? ScrollParentViewController
        var viewScale = 1.0 - 4 * scrollView.contentOffset.y / scrollView.frame.height
        viewScale = max(0.5, viewScale)
        parent?.redView.transform = CGAffineTransform(scaleX: 1, y: viewScale)
        parent?.redView.frame.origin.y = 0
        parent?.whiteLabel.alpha = labelAlpha

    }

最佳答案

终于找到答案了。如果您需要的话我会发布给您使用。对于这种情况,我们不应该使用变换。我们可以使用view.frame.size.height。您应该首先将 View 的高度大小保存在变量中,因为它的值会改变。 因此,将其添加到您的 HeaderViewController 中(在我的例子中,其名称为 ScrollParentViewController ):

var height: CGFloat!
override func viewDidLoad() {
    super.viewDidLoad()
    height = redView.frame.height
}

然后您可以在 scrollViewDidScroll() 中使用此变量:

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    var viewScale = 1.0 - 4 * scrollView.contentOffset.y / scrollView.frame.height
    viewScale = max(0.5, viewScale)
    let parent = self.parent as? ScrollParentViewController
    parent?.redView.frame.size.height = (parent?.height)! * viewScale
}

感谢您的帮助。

关于ios - 修复 UIView 元素以避免更改 "scrollViewDidScroll"函数中的尺寸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43225485/

相关文章:

ios - 快速组合 : `append` which does not require output to be equal?

ios - Swift - 覆盖 UIViewController 与 UITableViewController 中的函数

swift - Swift 上的协议(protocol)和组合

ios - 为 UIScrollView 子类设置缩放

ios - 如何以编程方式创建 UIImage View - Swift

ios - 基础:为什么 Int64.max 和 Double(Int64.max) 在 Swift iOS SDK 中打印 2 个完全不同的值

ios - CC动画缓存 : how should I use it?

ios - Swift 3 数组限制

ios - 无法以编程方式将 View 添加到 Storyboard 中的现有 uiview

ios - UIScrollView 在 subview 内部触摸时垂直滚动