循环 UIScrollView 但继续减速

2023-12-11

我已经设置了一个无限滚动视图,当它达到 0 内容偏移量时,我将其设置为最大内容偏移量,反之亦然。

i.e.

[scrollView setContentOffset:CGPointMake(0,0) animated:NO];

这是可行的,但它会阻止 UIScrollView 减速。

有没有办法做到这一点但保持 UIScrollView 减速?

我试过这个...

float declerationRate = scrollView.decelerationRate;
[scrollView setContentOffset:CGPointMake(scrollView.frame.size.width, 0) animated:NO];
scrollView.decelerationRate = declerationRate;

但没有成功。

EDIT

我刚刚意识到 decelerationRate 是确定减速多慢/快的设置。

我需要的是从滚动视图获取当前速度。


是的,我必须稍微调整一下这个想法。

事实证明,尝试设置 UIScrollView 的速度很困难......非常困难。

所以无论如何,我对它进行了一些调整。

这实际上是在回答别人的 SO 问题并认为我会尝试自己解决它之后的一个迷你项目。

我想创建一个旋转应用程序,我可以通过滑动来旋转箭头,使其旋转并减速到一个点。

我所做的是设置一个带有向上箭头的 UIImageView。

然后覆盖UIImageView的是一个UIScrollView。

然后在代码中...

@interface MyViewController () <UIScrollViewDelegate>

@property (nonatomic, weak) IBOutlet UIScrollView *scrollView;
@property (nonatomic, weak) IBOutlet UIImageView *arrowView;

@end

@implementation MyViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.

    //make the content size really big so that the targetOffset of the deceleration will never be met.
    self.scrollView.contentSize = CGSizeMake(self.scrollView.frame.size.width * 100, self.scrollView.frame.size.height);
    //set the contentOffset of the scroll view to a point in the center of the contentSize.
    [self.scrollView setContentOffset:CGPointMake(self.scrollView.frame.size.width * 50, 0) animated:NO];
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

- (void)rotateImageView
{
    //Calculate the percentage of one "frame" that is the current offset.

    // each percentage of a "frame" equates to a percentage of 2 PI Rads to rotate
    float minOffset = self.scrollView.frame.size.width * 50;
    float maxOffset = self.scrollView.frame.size.width * 51;

    float offsetDiff = maxOffset - minOffset;

    float currentOffset = self.scrollView.contentOffset.x - minOffset;

    float percentage = currentOffset / offsetDiff;

    self.arrowView.transform = CGAffineTransformMakeRotation(M_PI * 2 * percentage);
}

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    //the scrollView moved so update the rotation of the image
    [self rotateImageView];
}

- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
    //the scrollview stopped moving.
    //set the content offset back to be in the middle
    //but make sure to keep the percentage (used above) the same
    //this ensures the arrow is pointing in the same direction as it ended decelerating

    float diffOffset = scrollView.contentOffset.x;

    while (diffOffset >= scrollView.frame.size.width) {
        diffOffset -= scrollView.frame.size.width;
    }

    [scrollView setContentOffset:CGPointMake(scrollView.frame.size.width * 50 + diffOffset, 0) animated:NO];
}

@end

这给出了像命运之轮那样的旋转器的预期效果,该旋转器将在任一方向上无休止地旋转。

但有一个缺陷。如果用户不断地旋转而不让它停止,它只会向任一方向旋转 50 次然后停止。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

循环 UIScrollView 但继续减速 的相关文章

  • 平板电脑在第一次单击时悬停,在第二次单击时单击

    发布这个问题主要是希望证实我对该行为的怀疑 从而为其他程序员记录下来 因为我在网上没有找到任何记录 我正在构建一个网站 其导航栏具有以下属性 水平截面是 ul of li 和一些 li li s 两者都有 A n a 元素带您进入该主题 触
  • 如何在文本末尾添加按钮,如 Facebook 的“继续阅读”?

    当状态帖子太长时 Facebook 应用程序会剪切文本并在末尾添加 继续阅读 它如何知道在哪里剪切文本并添加 继续阅读 不仅仅是向 textView 或标签添加按钮 而是如何剪切字符串 例如 在下图中 我将行数限制为 7 我可以在 text
  • 更新到 Xcode 7.0.1,项目现在有问题

    因此 我将 Xcode 6 1 版本上传到 iTunes Connect 并且该应用程序获得了批准 现在我正在尝试更新应用程序 我更新到 Xcode 7 0 1 Xcode 给我带来了问题 指出 对于应用程序 我使用了故事板和 Object
  • scrollToRowAtIndexPath:atScrollPosition:动画滚动太慢

    基于分页 UIScrollView 的页面更改 我正在调用scrollToRowAtIndexPath atScrollPosition animated到所显示的该页面的表详细信息 void scrollViewDidScroll UIS
  • 使用 UINavigationController 从右向左推送 ViewController

    大家都知道UINavigationController从左到右推送ViewController 有没有办法从右到左推送View 就像后退按钮的动画一样 现在我有这个 self navigationController pushViewCon
  • 即席分发失败

    我在一家大公司工作 正在开发一个适用于 iOS 5 的 iOS 应用程序 分发应用程序的唯一方式是通过临时部署 我拥有自己的服务器已经有一段时间了 由 o2switch 法国托管商 托管 当我开始开发时 我们使用它来部署应用程序以进行 Be
  • Swift NotificationCenter 删除观察者最快的方法

    我正在添加一些观察员viewController applicationWillResignActive applicationDidEnterBackground 以及许多其他人 我想删除self作为一行中所有已注册通知的观察者 我的问题
  • 相机叠加图片

    edit 3 好消息和坏消息 好消息是 在连接检查器中 通过断开覆盖 UIToolbar 并连接 UIImageview 我看到theKing 但是 坏消息 我没有看到我也需要的 UIToolbar 所以现在的问题是 当用户完成这里操作后
  • 未安装的应用程序的URL方案

    简单的问题 我正在开发一个将注册自己的 URL 方案的应用程序 我计划通过人们最喜欢的 QRCode 阅读器使用 QRCode 启动该应用程序 我的问题 如果我的应用程序尚未安装在他们的 iPhone iPad 上 会发生什么 他们会被引导
  • 无法下载应用程序 - 此时无法下载“APP”

    我的应用程序有 PLUS 版本和常规版本 我使用不同的目标对它们进行存档 我将 ipa 上传到 TestFlight 也上传到我的曲棍球服务器 PLUS 版本总是下载得很好 但普通版本总是给我 无法下载应用程序 错误 我根本没有更改两个版本
  • 使用 iOS 设备作为 TCP 客户端 - 无 Bonjour

    我想使用 iOS 设备作为 TCP 客户端 但我找不到可理解的 API 指南 示例来说明如何做到这一点 我试过SimpleNetworkStreams and PictureSharing 但他们都使用 Bonjour 我可以轻松建立 UD
  • 多点触摸检测和区分 - Cocos2d for iPhone

    我想知道如何在多点触摸视图中检测和区分触摸 我读过有关 哈希 代码的内容 但我不明白如何使用它 我想知道我的两个精灵何时被同时触摸 就像在钢琴的两个琴键上按下和弦一样 编辑 以下是我的 TouchesBegan 的示例 void ccTou
  • 获取 Swift 子目录中资源的所有 URL

    我正在尝试为 iOS 应用程序的子目录中的所有资源创建 URL 数组 我似乎无法到达正确的路径 即使我不知道名称 我也希望能够检索 URL 即我不想将文件名硬编码到代码中 Below is a screen shot of the hier
  • 子视图控制器旋转方法未被调用

    Summary 我试图将子视图控制器添加到父视图控制器 并让父视图控制器通知子视图控制器旋转事件 但是 旋转消息不会转发到子视图控制器 这是默认行为 为什么这种默认行为没有发生 环境 iOS 7 XCode 5 OSX 10 9 Detai
  • 带约束的 Swift 动画

    是否可以通过改变约束来制作 UIView 动画 基本上 我想要动画myv UIView 具有 x y 高度和宽度约束 使用 UIView animateWithDuration 1 5 通过改变旧的限制 是的 这是可能的 你可以这样做 fu
  • iOS:addConstraints:应用程序崩溃

    Problem 我似乎无法在现有项目中采用自动布局 Details 我之前也遇到过与此问题相同的问题presentViewController 在 iOS 但所提供的答案都不是我的解决方案 我正在使用所有没有 xib 的故事板视图 我的 使
  • 如何正确使用 nsoperationqueue 的 autoreleasepool

    我有一个正在重构的应用程序 我刚刚实现了多线程 以便 UI 可以运行得更流畅 在 iPhone 模拟器中 我没有遇到任何泄漏 但在运行 iOS 4 2 的 iPhone 3G 上进行测试时 出现了内存泄漏 我已经做了很多搜索来使用操作队列实
  • 在应用程序内启用或禁用 Iphone 推送通知

    我有一个 iPhone 应用程序 可以接收推送通知 目前 我可以通过转到 iPhone 设置 通知来禁用我的应用程序的推送通知 但我想在我的应用程序中添加一个开关或按钮来启用或禁用推送通知 这是可以做到的 因为我在 foursquare i
  • extern NSString *const 在类中。

    你好 我有这个头文件 import
  • Swift 3 和 Xcode8 - init 的使用不明确

    在我安装 Xcode 8 并将项目转换为 Swift 3 之前 以下行没问题 现在转换后看起来像这样 let valueData Data Data bytes UnsafePointer

随机推荐

  • 当 Next.js 中的路由处于活动状态时定位活动链接

    如何像我们在 React Router 4 中那样定位 Next js 中的活动链接 意思是 当活动链路的路由处于活动状态时 为活动链路指定一个类别 一个简单的解决方案基于useRouter hook import Link from ne
  • 如何使用 jQuery ajax 调用 PHP 函数?

    我有一个名为 myfunctions php 的文件 其中有很多函数 例如 function sendForm save form function fn2 do something Other functions 和 jquery 代码
  • 两个连续的 [NSDate date] 总是会返回不同的时间吗?

    dateS 和 date 总是不同吗 Two NSDate date following each other NSDate dateA NSDate date Line X NSDate dateB NSDate date Line X
  • 最后手段的性能优化策略[关闭]

    Closed 这个问题需要多问focused 目前不接受答案 该网站上已经有很多性能问题 但我发现几乎所有问题都非常针对具体问题并且相当狭窄 并且几乎都重复了避免过早优化的建议 我们假设 代码已经可以正常工作了 所选择的算法对于问题的情况来
  • Java:枚举与整数

    在 Java 中使用标志时 我看到了两种主要方法 其中一个使用 int 值和一行 if else 语句 另一种是使用枚举和大小写切换语句 我想知道使用枚举与整数作为标志在内存使用和速度方面是否存在差异 Both ints and enums
  • C# 使用 varbinary 调整 jpg 图像大小,转换为字节并保存到数据库中

    我正在尝试调整使用 FileUpload 控件上传的 jpg 图像的大小 并将其转换为字节 然后将其保存到数据库 SQL Server 2008 作为 varbinary MAX 我所做的和下面显示的代码是我设法将其转换为字节并以 varb
  • 使用单词边界时如何忽略特殊字符

    s sopa sop sopaa sopii 如何忽略 使用单词边界时 re sub r b sop b sopa s 输出 sopa sop sopaa sopii 看来你想要这样的东西 gt gt gt s sopa sop sopaa
  • 允许在Excel中显示超过15位数字

    我正在编写一个简单的 VBA Excel 脚本 我遇到了一些问题 因为我使用这种方式删除了数字的科学格式 Columns b ad NumberFormat 0 但后来我意识到其中一列有 23 位数字 比 15 位数字长 因为我需要在 Ex
  • 验证日期时如何在jqgrid中使用monthNames?

    在我的 jqgrid 中 当我单击 添加新记录 时 我的日期字段已预先填充当前日期 日期的格式为 yyyy MMM d 例如 2010 Jan 23 日期是必填字段 当我单击提交按钮时 它验证失败并显示错误 表明该日期无效 并且需要 Y m
  • 如果现场评估失败,如何保持在同一选项卡上

    我有主页选项卡和验证选项卡 我喜欢验证用户输入 如果用户输入有效 则切换回主页选项卡 否则留在验证选项卡上 此时 在我单击提交按钮后 即使用户输入无效 它也会切换回主页选项卡 索引 xhtml
  • REGEX 用逗号分隔的唯一数字

    我正在尝试验证以逗号分隔的数字 1 31 的唯一列表 不重复 i e 2 4 6 7 1 是有效输入 2 2 6无效 2有效 2 无效 1 2 3 4 15 6 7 31有效 1 2 3 4 15 6 7 32 无效 20 15 3 I t
  • 连接设备列表中的闪烁选项不允许我调试任何应用程序

    我有一个奇怪的问题 当我尝试在连接的设备中部署应用程序时 我有一个闪烁的选项 出现一秒钟 然后消失 然后再次出现 依此类推 当我尝试在任何连接的或虚拟设备中调试应用程序时 我收到此错误 01 23 18 49 36 Launching ap
  • 用户注册时自动创建个人资料 (Laravel 5)

    我正在尝试为我的注册用户创建一个个人资料页面 在此页面上 将显示身份验证 用户数据 姓名 电子邮件 还会显示额外的个人资料信息 城市 国家 地区 电话号码等 我已经建立了一对一的关系 但我遇到了一个问题 创建用户后 我想自动为该特定用户创建
  • Apache websocket 重定向到 Tomcat:mod_proxy 和 mod_proxy_wstunnel

    我正在尝试使用 mod proxy 和 mod proxy wstunnel 模块将流量从 Apache 重定向到 Tomcat HTTP 流量重定向没有问题 但我无法使用迄今为止尝试过的任何配置成功重定向 websocket 流量 我正在
  • 从 Python 调用并执行 r 脚本

    我正在尝试使用此 Python 脚本来调用 r 脚本并运行它 r 脚本是 dbc2csv r 其代码位于 Python 块下方 我设法调用 r 脚本并打开 R studio 但代码没有像我希望的那样自动运行 我的感觉是有什么问题subpro
  • 滚动位置时显示 Div

    首先我想参考这个网站 http annasafroncik it 我喜欢动画进入视野的方式 在 jquery 中创建类似的函数很难吗 有没有什么插件可以实现这样的效果 希望有人能帮助我 基本上 您想要为每个要隐藏的元素添加一个 hideme
  • 有没有办法获得“numpy.linalg.svd()”代码

    由于 numpy linalg svd 是一个预定义函数 我没有找到它的内部代码 from scipy import linalg u s v np linalg svd b full matrices True import inspec
  • SetTimeout 递归函数(Javascript)超出最大调用堆栈大小[重复]

    这个问题在这里已经有答案了 我有一个递归 SetTimeout 函数 可以在加载过滤器后单击页面上的过滤器 它们是通过 Ajax 加载的 因此在页面加载时无法立即使用 scope clickFilter function var filte
  • 核心数据:提取是否必须访问持久存储?

    假设我这样做 NSManagedObjectContext context a managed object context NSString entityName an entity name NSFetchRequest request
  • 循环 UIScrollView 但继续减速

    我已经设置了一个无限滚动视图 当它达到 0 内容偏移量时 我将其设置为最大内容偏移量 反之亦然 i e scrollView setContentOffset CGPointMake 0 0 animated NO 这是可行的 但它会阻止