- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我希望 UIScrollView 在快速扫描后快速滚动,like this .虽然,当打开分页时,滚动有效 one page at a time .如果无需使用手势识别器手动实现,只需轻弹手指即可启用分页,是否可以快速滚动?
最佳答案
这很简单,但是您必须自己实现分页方面(这很简单)。您不需要手势识别器。
首先,调整你的UIScrollView减速率:
scrollView.decelerationRate = UIScrollViewDecelerationRateFast
假设我们有一个内容数组——我们称它为yourPagesArray
。在您的 UIScrollViewDelegate 中,实现以下方法:
func scrollViewWillEndDragging(_ scrollView: UIScrollView, withVelocity velocity: CGPoint, targetContentOffset: UnsafeMutablePointer<CGPoint>)
{
//This is the index of the "page" that we will be landing at
let nearestIndex = Int(CGFloat(targetContentOffset.pointee.x) / scrollView.bounds.size.width + 0.5)
//Just to make sure we don't scroll past your content
let clampedIndex = max( min( nearestIndex, yourPagesArray.count - 1 ), 0 )
//This is the actual x position in the scroll view
var xOffset = CGFloat(clampedIndex) * scrollView.bounds.size.width
//I've found that scroll views will "stick" unless this is done
xOffset = xOffset == 0.0 ? 1.0 : xOffset
//Tell the scroll view to land on our page
targetContentOffset.pointee.x = xOffset
}
您还需要实现以下委托(delegate)方法,以处理用户轻轻抬起手指而不导致任何滚动减速的情况:
(更新:您可能不需要在最新的 iOS SDK 下执行此操作。当速度为零时,似乎现在会调用上述委托(delegate)方法。)
func scrollViewDidEndDragging(_ scrollView: UIScrollView, willDecelerate decelerate: Bool)
{
if !decelerate
{
let currentIndex = floor(scrollView.contentOffset.x / scrollView.bounds.size.width)
let offset = CGPoint(x: scrollView.bounds.size.width * currentIndex, y: 0)
scrollView.setContentOffset(offset, animated: true)
}
}
设置减速率:
scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
然后你的 ScrollView 委托(delegate)实现:
- (void) scrollViewWillEndDragging:(UIScrollView *)scroll withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset
{
//This is the index of the "page" that we will be landing at
NSUInteger nearestIndex = (NSUInteger)(targetContentOffset->x / scrollView.bounds.size.width + 0.5f);
//Just to make sure we don't scroll past your content
nearestIndex = MAX( MIN( nearestIndex, yourPagesArray.count - 1 ), 0 );
//This is the actual x position in the scroll view
CGFloat xOffset = nearestIndex * scrollView.bounds.size.width;
//I've found that scroll views will "stick" unless this is done
xOffset = xOffset==0?1:xOffset;
//Tell the scroll view to land on our page
*targetContentOffset = CGPointMake(xOffset, targetContentOffset->y);
}
- (void) scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if( !decelerate )
{
NSUInteger currentIndex = (NSUInteger)(scrollView.contentOffset.x / scrollView.bounds.size.width);
[scrollView setContentOffset:CGPointMake(scrollView.bounds.size.width * currentIndex, 0) animated:YES];
}
}
关于ios - 带有分页的 UIScrollView 的灵敏度/滚动速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11561992/
使用interactjs ,有什么办法可以控制drag vhold的灵敏度吗?在 PC 上,使用鼠标触发保持事件非常容易。在 iPad/iPhone 上,屏幕灵敏度(主要是手指压力的变化)使得很难获得
我正在尝试让 ECG 查看器读取 DICOM 文件。 我获得了所有数据(如 channel 定义序列),还获得了每个 channel 的波形样本。我的问题是有一个标签( channel 灵敏度),我无
这个问题在这里已经有了答案: What is a NullReferenceException, and how do I fix it? (27 个答案) 关闭 5 个月前。 我是一个绝对的初学者
我在 R 中使用插入符号进行逻辑回归: ctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 10,
我已经实现了 SimpleOnGestureListener.onFling(),但我必须非常快地挥动才能触发它。有什么办法让它更灵敏吗? 提前致谢... 最佳答案 触发 onFling() 事件所需
我有一个相对简单的问题,我只是无法在任何地方找到解决方案。 有谁知道如何初始化 JScrollPane 插件( plugin website ),并具有更灵敏的滚动速度?默认速度太慢且缓慢,尤其是在更
我试图减慢 UICollectionView 中的滚动速度。一切都很好,细胞之间的距离也很好,但它移动得太快了。 如何调整滚动的灵敏度或速度? [编辑] 我忘了提到我已经尝试过: self.colle
我正在寻找一种在绘制签名时减慢鼠标按下移动速度的方法。 我认为这会让用户有更多的控制权。 有什么办法吗? 最佳答案 mousemove 事件由浏览器生成,因此您无法更改这些事件。 关于javascri
我正在使用 jQuery ui ressized,我(个人)发现它就像一个视频游戏,可以在您尝试调整元素大小时确定点击区域。 看起来命中区域是 div 边缘的单个像素! WT... 有人知道如何增加
我正在使用 PyML用于 SVM 分类。但是,我注意到当我使用 LOO 评估多类分类器时,结果对象不报告灵敏度和 PPV 值。相反,它们是 0.0: from PyML import * from P
我是一名优秀的程序员,十分优秀!