gpt4 book ai didi

objective-c - 在 Swift 中,您将如何编写 scrollViewWillEndDragging withVelocity targetContentOffset 方法?

转载 作者:搜寻专家 更新时间:2023-10-30 22:21:30 24 4
gpt4 key购买 nike

如何用 Swift 编写此代码?

更新:发布了我试图转换的方法,最初发布了一个不同的方法,这不是我试图隐藏的方法

这适用于 Objective C,但不适用于 Swift。当我尝试将 ceilffloorfCGFloat 一起使用时出现转换错误。

    - (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{

float pageWidth = 200 + 30; // width + space

float currentOffset = scrollView.contentOffset.x;
float targetOffset = targetContentOffset->x;
float newTargetOffset = 0;

if (targetOffset > currentOffset)
newTargetOffset = ceilf(currentOffset / pageWidth) * pageWidth;
else
newTargetOffset = floorf(currentOffset / pageWidth) * pageWidth;

if (newTargetOffset < 0)
newTargetOffset = 0;
else if (newTargetOffset > scrollView.contentSize.width)
newTargetOffset = scrollView.contentSize.width;

targetContentOffset->x = currentOffset;
[scrollView setContentOffset:CGPointMake(newTargetOffset, 0) animated:YES];


}

最佳答案

也许晚些时候参加派对,但是如果处理 iOS11 + Swift4,恕我直言,所提出的解决方案都不是可行的解决方案。

下面有一个更适合该问题的答案,完全适用于 Swift 4.1:

override func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>) {

let pageWidht:CGFloat = 200.0 + 30.0
let currentOffset = scrollView.contentOffset.x
let targetOffset = CGFloat(targetContentOffset.pointee.x)
var newTargetOffset:CGFloat = 0.0

if targetOffset > currentOffset {
newTargetOffset = CGFloat(ceilf(Float((currentOffset / pageWidht) * pageWidht)))
}
else {
newTargetOffset = CGFloat(floorf(Float((currentOffset / pageWidht) * pageWidht)))
}

if newTargetOffset < 0.0 {
newTargetOffset = 0.0
}
else if newTargetOffset > scrollView.contentSize.width {
newTargetOffset = scrollView.contentSize.width
}
targetContentOffset.pointee = CGPoint(x: newTargetOffset, y: 0.0)
}

关于objective-c - 在 Swift 中,您将如何编写 scrollViewWillEndDragging withVelocity targetContentOffset 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28556317/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com