在滚动过程中改变背景颜色

2023-12-03

我的应用程序有一个入门部分,有 4 个页面,用户可以水平滚动以了解如何使用该应用程序(标准)。我希望当用户从一个页面滚动到另一个页面时背景颜色会发生变化。

我有 4 个想要使用的 RGB 值:

241,170,170

170,201,241

188,170,241

241,199,170

我知道我必须使用滚动视图委托+内容偏移来更改 uicolor 值,但我不确定如何让它转到我选择的特定颜色。

任何帮助将不胜感激。 任何实施都可以,无论是快速的还是客观的

thanks


对于任何有兴趣的人。这就是解决方案。我结合了我在堆栈上找到的一些答案并将其调整为使用 4 种颜色

- (void)scrollViewDidScroll:(UIScrollView *)scrollView  {
CGFloat pageWidth = self.scrollView.frame.size.width;
float fractionalPage = self.scrollView.contentOffset.x / pageWidth;
NSInteger page = lround(fractionalPage);
self.pageControl.currentPage = page;

// horizontal
CGFloat maximumHorizontalOffset = scrollView.contentSize.width - CGRectGetWidth(scrollView.frame);
CGFloat currentHorizontalOffset = scrollView.contentOffset.x;

// percentages
CGFloat percentageHorizontalOffset = currentHorizontalOffset / maximumHorizontalOffset;

NSLog(@"content offfset: %f", percentageHorizontalOffset);

if (percentageHorizontalOffset < 0.333333) {
    self.view.backgroundColor = [self fadeFromColor:self.colorArray[0] toColor:self.colorArray[1] withPercentage:percentageHorizontalOffset*3];
} else if (percentageHorizontalOffset >= 0.333333 && percentageHorizontalOffset < 0.666667) {
    self.view.backgroundColor = [self fadeFromColor:self.colorArray[1] toColor:self.colorArray[2] withPercentage:(percentageHorizontalOffset-0.333333)*3];
} else if (percentageHorizontalOffset >= 0.666667) {
    self.view.backgroundColor = [self fadeFromColor:self.colorArray[2] toColor:self.colorArray[3] withPercentage:(percentageHorizontalOffset-0.666667)*3];
}
}

- (UIColor *)fadeFromColor:(UIColor *)fromColor toColor:(UIColor *)toColor withPercentage:(CGFloat)percentage
{
    // get the RGBA values from the colours
CGFloat fromRed, fromGreen, fromBlue, fromAlpha;
[fromColor getRed:&fromRed green:&fromGreen blue:&fromBlue alpha:&fromAlpha];

CGFloat toRed, toGreen, toBlue, toAlpha;
[toColor getRed:&toRed green:&toGreen blue:&toBlue alpha:&toAlpha];

//calculate the actual RGBA values of the fade colour
CGFloat red = (toRed - fromRed) * percentage + fromRed;
CGFloat green = (toGreen - fromGreen) * percentage + fromGreen;
CGFloat blue = (toBlue - fromBlue) * percentage + fromBlue;
CGFloat alpha = (toAlpha - fromAlpha) * percentage + fromAlpha;

// return the fade colour
return [UIColor colorWithRed:red green:green blue:blue alpha:alpha];
}    
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在滚动过程中改变背景颜色 的相关文章

  • UIAlertAction 处理程序在延迟后运行

    我正在尝试将 UIAlertViews 更改为 UIAlertControllers 我为此设置了这个操作 UIAlertAction undoStopAction UIAlertAction actionWithTitle Undo St
  • Xcode 11 - 在 Catalyst Swift 中禁用调整大小模式

    We are 将我们基于 Swift 的 iOS 应用程序转换为 Mac兼容使用Catalyst在 Xcode 11 中 当用户使用时 我们在 UI 中面临一个问题resize应用程序窗口 那么我们可以禁用调整大小模式并为应用程序窗口提供修
  • 当表格为空时 iPhone UITableView 图像背景

    我想当我的 UITableView 为空时显示图像背景 目前 我尝试将 UIImageView 添加到包含表格的视图控制器 但 XCode 不允许这样做 有没有好的方法呢 您可以在表视图顶部添加图像视图或更改表视图的背景视图 Check i
  • 在 iOS Safari 上滚动后锚点失去点击能力

    使用它来获取点击次数 nav li a click function event event preventDefault target this attr href replace goToByScroll target 这是滚动功能 f
  • Objective C 宏附加到字符串

    我认为这是一件非常简单的事情 但由于我是 iOS 开发和 Objective C 的新手 所以我无法弄清楚 define RESTFUL PATH PREFIX https gogch com gch restful define LOGI
  • 在 Safari 中快速打开链接

    我目前正在我的应用程序中打开链接WebView 但我正在寻找一个打开链接的选项Safari反而 它不是 融入 Swift 但你可以使用标准UIKit方法来做到这一点 看看 UIApplication 的openUrl https devel
  • 如何设置 UINavigationbar 的渐变颜色?

    我想设置UINavigationbar backgroundColor渐变颜色 我想通过颜色数组设置它以创建渐变 理想情况下 作为内部的可访问方法UINavigationBar将其颜色更改为此渐变 有什么建议么 除了手动设置图像作为导航栏的
  • 使用什么来移动 UIView self.frame 或 self.transform 属性?

    这个问题我有点困惑 我知道我可以改变观点self frame origin 但我发现有一个名为 变换 的属性 我认为这是用于在屏幕上移动我的视图等 也许我有点不明白 所以我想知道 我必须使用哪个房产来搬家UIView 或者它的子类 另一个类
  • 双击并滑动/拖动手指以放大/缩小

    如果有人使用过 iOS 版谷歌地图应用程序 那么它有一个很棒的功能 可以用一根手指放大 缩小 双击 uiscrollview 然后立即向上或向下滑动手指以放大 缩小 有谁知道这是如何实现的 谷歌发布了任何片段吗 我将此功能添加到我的 UIS
  • UIImageWriteToSavedPhotosAlbum 选择器语法问题

    努力让 UIImageWriteToSavedPhotosAlbum 快速工作https developer apple com library ios documentation UIKit Reference UIKitFunction
  • 如何在 iOS 6 中强制 UIViewController 为纵向

    As the ShouldAutorotateToInterfaceOrientation在 iOS 6 中已弃用 我用它来强制特定视图仅肖像 在 iOS 6 中执行此操作的正确方法是什么 这仅适用于我的应用程序的一个区域 所有其他视图都可
  • iOS Twitter NSURLErrorDomain 代码=-1012

    我正在尝试通过在我的应用程序中注册 Twitter 来获取用户的联系方式 我发现this https github com malcommac DMTwitterOAuthgithub上的项目看起来非常好 我只遇到一个问题 如果我使用来自
  • UNTimeIntervalNotificationTrigger nextTriggerDate() 是否给出了错误的日期?

    我正在更新本地通知以与 iOS 10 配合使用 但遇到了一个问题 我认为 nextTrigger 函数返回的不是 满足触发条件的下一个日期 而是返回当前日期时间加上您最初设置 UNTimeInvervalNotificationTrigge
  • 在 Swift 中,如何为具有自动布局的 UIView 制作动画,就像页面滑入一样?

    我尝试创建一个 UIView 来表示一个大小与设备屏幕相同的页面 由于该应用程序支持方向 因此我使用 AutoLayout 来构建它 它工作正常 直到我尝试将页面动画化以从右侧滑入 经过一番研究后 我能想到的最好的办法是 myView UI
  • 如何使用固定宽度和自动布局正确缩放图像?

    我有一个动态 UIImage 和一个固定宽度为 280 0px 的 UIImageView 并且我正在使用自动布局 在 UIImage 视图上 我设置了宽度和高度约束 并降低了高度约束的优先级 我选择了 aspect fit 并将内容拥抱和
  • 如何在多个视图中显示相同的导航栏?

    我可以为一个视图重现以下导航栏 但是 一旦我单击按钮后移至下一个视图 我就会丢失最右边的两个图标 搜索 个人资料 据我所知 从故事板设置导航项目通常是按视图进行的 我可以为每个视图复制这些项目 但我想知道是否有更好的方法来完成一次 是否有教
  • ObjectiveC 和 JavaScriptCore:使用这种调用回调的方法会导致内存问题吗?

    免责声明 这是一篇很长的文章 但对于那些努力使用新的 ObjectiveC JavascriptCore 框架并在 ObjC 和 JS 之间进行异步编码的人来说可能非常有价值 您好 我对 Objective C 非常陌生 正在将 javas
  • 共享扩展程序未出现在能够在 iPhone 上共享照片的应用程序列表中

    我正在尝试创建一个共享应用程序扩展 并按照以下来源的教程进行操作 http www technetexperts com mobile share extension in ios application overview with exa
  • 如何删除以前的 ViewController

    我是一名学生 对编程还很陌生 我正在尝试在业余时间学习 Objective C Swift 我使用 spriteKit 和 swift 制作了一个游戏 有多个菜单 场景 我正在尝试从一个视图控制器转换到另一个视图控制器 为此 我使用了以下代
  • GCD 与自定义队列

    我想知道这两者的性能有什么区别 dispatch async dispatch get global queue DISPATCH QUEUE PRIORITY HIGH 0 perform complex operation dispat

随机推荐

  • Selenium 可以在没有 GUI 的 Ubuntu 上工作吗?

    这个问题在这里已经有答案了 我在 Amazon AWS 和 Cloud 9 等各种云平台上使用 Codeception 默认情况下 这两个平台都没有 GUI 我的问题是 你能在这种类型的系统上运行 Selenium 吗 或者我需要以某种方式
  • youtube-dl 给了我一个关于 ssl 的错误

    以下是 youtube dl 给我的错误 另一个工具you get给了我一个类似的错误 我应该怎么做才能从 youtube 下载视频 youtube dl f 137 https youtu be 0Ef9GudbxXY 17 27 23
  • 类型错误:get() 需要 1 个位置参数,但给出了 3 个

    此代码将通过以下方式运行基本数据输入窗口tkinter这将保存用户的输入 当我运行代码并用鼠标单击 提交 按钮时 出现错误 print Informaci n Adicional format self entry name get 1 0
  • OpenStreetMap 经常发送网关超时错误

    我在程序中使用传单地图 代码如下
  • 是否有“git merge -s ours”的“他们的”版本?

    将主题分支 B 合并到 A 时使用git merge 我遇到一些冲突 我知道所有的冲突都可以使用 B 中的版本来解决 我知道git merge s ours 但我想要的是类似的东西git merge s theirs 为什么它不存在 与现有
  • Rails 3 有条件包含 Javascript 文件

    我正在尝试找出将以下内容包含在 Rails 3 中的最佳方法 正如你所看到的 我只是希望 IE 可以使用该 javascript 文件 所以也许我根本不应该这样做 我愿意接受建议 我用它来指定要包含的默认 javascript 文件 con
  • Xcode 8.2.1 / Swift 3 - 从 Plist 字典数组加载 TableView

    我有一个 plist 我将其复制到我的项目中以在 TableView 中使用它 plist 加载 我通过将内容和行数打印到控制台来进行验证 当我构建项目时 我得到一个没有数据的空白 TableView 我已经搜索并尝试了几天 但仍然无法让它
  • Modelica 类图

    我正在寻找一种可以 自动 从 Modelica 代码创建类图的工具 https trac modelica org Modelica attachment ticket 85 classDiagramModelicaMedia png我需要
  • 更新标记生成器后,LineByLineTextDataset 继续加载

    更新标记生成器后 当我运行此行时 数据集 LineByLineTextDataset tokenizer bert tokenizer file path some file txt 块大小 128 它会永远加载 这是完整的代码 from
  • 在 bash 补全上下文中,关于 ${array[*]} 与 ${array[@]} 的混淆

    我第一次尝试编写 bash 补全 我对取消引用 bash 数组的两种方法有点困惑 array and array 这是相关的代码块 它有效 但我想更好地理解它 switch local cur perls local ROOT PERLBR
  • 打开文件对话框并使用 WPF 控件和 C# 选择文件

    我有一个TextBox named textbox1 and a Button named button1 当我点击button1我想浏览我的文件以仅搜索图像文件 类型 jpg png bmp 当我选择一个图像文件并在文件对话框中单击 确定
  • Matlab:用曲线绘制频率分布

    我必须在一张图上绘制 10 个频率分布 为了保持整洁 我想避免制作带有箱的直方图 并且更喜欢让线条沿着每个直方图的轮廓 我尝试了以下方法 counts bins hist data plot bins counts 但这给了我一条非常不精确
  • PostgreSQL 是否会持久加载其 pl* 解释器?

    如果我在 plperlu 中写了一些东西 那么该模块什么时候会被重新加载 每次函数运行时 第一次跑的时候 如果 Perl DLL 一段时间没有使用 是否会被卸载 然后又会重新加载另一个模块 我认为在该会话中第一次使用该语言时 该模块将为每个
  • VideoOutput QML 的自定义源属性

    到底需要做什么才能提供自定义框架源VideoOutputQML 对象 Does VideoOuput本身提供了一个实例QAbstractVideoSurface类到 源 Qt5 文档说明了有关此问题的以下内容 如果您正在扩展自己的 C 类以
  • 表被指定两次,既作为“UPDATE”的目标又作为单独的数据源

    我正在尝试更新一列中的多行 但是当我执行查询时出现错误 有人指导我哪里错了 提前致谢 UPDATE TestTaker SET TestTaker Email Replaced WHERE TestTaker Id IN SELECT Te
  • 将字符串分解两次

    我有一个这样组成的字符串 87 1 nuovo 88 4 209 89 41 1 5 3 1 116 20 13 3 148 模式是 Id1 Mq1 Q ta1 Tipo1 Id2 Mq2 Q ta2 Tipo2 Id3 Mq3 Q ta3
  • ProxySelector 将 URL 的方案从 https:// 更改为 socket://

    我需要访问 Facebook 但所有传出通信都在我们的服务器上被阻止 因此我必须使用代理 我用以下方法初始化代理 ProxySelector setDefault new ConfigurableProxySelector mapping
  • Java 8 Streams:列表到具有映射值的映射

    我正在尝试创建一个Map from a List using Streams The key应该是原始项目的名称 The value应该是一些衍生数据 After map 该流由以下部分组成Integers 并在当时 collect 我无法
  • 测试一个数据帧是否是另一个数据帧的排序版本

    测试某个数据帧是否只是另一个数据帧的排序版本是否可行 例如 如果我有两个数据框a and b 有什么方法可以轻松确定是否a只是一个重新排序的版本b 或相反亦然 这是一个简单的例子 a lt data frame x1 1 10 x2 11
  • 在滚动过程中改变背景颜色

    我的应用程序有一个入门部分 有 4 个页面 用户可以水平滚动以了解如何使用该应用程序 标准 我希望当用户从一个页面滚动到另一个页面时背景颜色会发生变化 我有 4 个想要使用的 RGB 值 241 170 170 170 201 241 18