当前位置:  开发笔记 > 编程语言 > 正文

可以修改UIScrollView的减速率吗?

如何解决《可以修改UIScrollView的减速率吗?》经验,为你挑选了3个好方法。

由于最初询问此问题,因此通过OS 3.0中引入的decelerationRate属性添加了UIScrollView减速率自定义.


我有一个UIScrollView,其减速率我想改变.为了清楚起见,我说的是当你在滚动视图上滑动手指并且在抬起手指后视图继续滚动(但逐渐减慢).我想提高减速率,以便它在默认情况下更快停止.

我见过一些UIScrollViews似乎减速更快的应用程序.在UIScrollView中似乎没有这个API,但我想知道是否有另一种方法可以做到这一点.



1> Anto Binish ..:

您可以使用UIScrollView的decelerationRate属性来控制它.即使它是浮点数,它也不接受除UIScrollViewDecelerationRateNormal或UIScrollViewDecelerationRateFast之外的任何值.请查看以下代码

NSLog(@"1. decelerationRate %f", scrollview.decelerationRate);

scrollview.decelerationRate = UIScrollViewDecelerationRateNormal;
NSLog(@"2. decelerationRate %f", scrollview.decelerationRate);

scrollview.decelerationRate = UIScrollViewDecelerationRateFast;
NSLog(@"3. decelerationRate %f", scrollview.decelerationRate);

scrollview.decelerationRate = 0.7;
NSLog(@"4. decelerationRate %f", scrollview.decelerationRate);

scrollview.decelerationRate = 0.995;
NSLog(@"5. decelerationRate %f", scrollview.decelerationRate);

上面的代码给出了以下输出,很明显我们不能使用自定义减速率.

2012-01-03 11:59:41.164 testviewv2[10023:707] 1. decelerationRate 0.998000
2012-01-03 11:59:41.172 testviewv2[10023:707] 2. decelerationRate 0.998000
2012-01-03 11:59:41.173 testviewv2[10023:707] 3. decelerationRate 0.990000
2012-01-03 11:59:41.175 testviewv2[10023:707] 4. decelerationRate 0.990000
2012-01-03 11:59:41.176 testviewv2[10023:707] 5. decelerationRate 0.998000



2> yeahdixon..:

是的,我通过以下方式成功改变了减速率:

scrollView.decelerationRate = UIScrollViewDecelerationRateFast;


@CharlieMezak这是一个浮点数,但只适用于UIScrollViewDecelerationRateFast和UIScrollViewDecelerationRateNormal值.

3> mackross..:

我发现通过使用KVC修改实例变量_decelerationFactor允许我将速率更改为除UIScrollViewDecelerationRateNormalor之外的其他值UIScrollViewDecelerationRateFast.我将一小部分子UIScrollView包在一起并将其包裹起来

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        @try {
            CGFloat decelerationRate = UIScrollViewDecelerationRateFast +(UIScrollViewDecelerationRateNormal - UIScrollViewDecelerationRateFast) * .52;
            [self setValue:[NSValue valueWithCGSize:CGSizeMake(decelerationRate,decelerationRate)] forKey:@"_decelerationFactor"];

        }
        @catch (NSException *exception) {
            // if they modify the way it works under us.
        }


    }
    return self;
}


我没有遇到过问题,但它有点灰色.在那里,你可以直接在头文件中看到变量,不需要类转储.如果它改善了用户体验但是不要让它崩溃你的应用程序我认为它落入了它的领域.
听起来像是让您的应用被拒绝的快捷方式.
推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有