如何像 Pinterest/Evernote 一样从 UICollectionView 过渡到 UIViewController

2024-01-24

我有一个 UICollectionView,当选择一个项目时,我希望它能够全屏显示动画。因此它会从单元格大小过渡到全屏并成为 UIViewController。 Pinterest 和 Evernote 都有这种行为,点击单元格会将单元格转换为全屏视图控制器。

有没有任何例子说明如何做到这一点?我搜索了几个项目,但没有找到任何有关将单元格转换为全屏视图控制器的说明。

Pinterest 在这里讨论它:https://medium.com/@Pinterest_Engineering/behind-the-pins-building-pinterest-3-0-for-ios-100f57f6940 https://medium.com/@Pinterest_Engineering/behind-the-pins-building-pinterest-3-0-for-ios-100f57f6940


实现这一转变并不困难。正如文章所说,他们自定义了一个过渡来实现 UIViewControllerAnimatedTransitioning 协议,仅此而已。您需要计算您点击动画的 imageView 的位置的新尺寸。就是这样。

我们这两个app,都是通过上面的这个方法来实现这种类似的转场效果的。

https://itunes.apple.com/app/hua-ban-quan-qiu-you-mei-tu/id494813494?mt=8 https://itunes.apple.com/app/hua-ban-quan-qiu-you-mei-tu/id494813494?mt=8

和这个:

https://itunes.apple.com/app/mei-tu-sou-sou-wan-zhuan-wei/id781146829?mt=8 https://itunes.apple.com/app/mei-tu-sou-sou-wan-zhuan-wei/id781146829?mt=8


我创建了这个repo https://github.com/demon1105/PinterestSwift几天前。有了 Swift,除了一些小问题之外,我几乎完成了这个过渡,这是我第一个基于 Swift 的演示项目。但如果你不是 iOS 开发新手并且你会学习 Swift 的话,这也不难理解。我稍后会完成它并修复错误。

在实际项目中,它比演示项目更复杂,但有了它,也许您就知道如何实现这种转换。

祝你好运。

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

如何像 Pinterest/Evernote 一样从 UICollectionView 过渡到 UIViewController 的相关文章

  • 在后台线程上搜索

    我试图在 iPhone 应用程序中搜索数千个对象 但是搜索严重滞后 每次击键后 UI 都会冻结 1 2 秒 为了防止这种情况 我必须在后台线程上执行搜索 我想知道是否有人有一些在后台线程上搜索的提示 我读了一点NSOperation并在网上
  • UIBarButtonItem 按下后更改字体,在外观代理中指定

    我设置了UIBarButtonItem标题字体通过appearanceAppDelegate 中的代理 UIBarButtonItem appearance setTitleTextAttributes NSDictionary dicti
  • 将 MPMoviePlayerController 的视图添加到 UIView

    我想添加MPMoviePlayerController to a UIView 首先 我在 xib 文件中放置了一个视图 名为 youTubeView youtube播放器是MPMoviePlayerController youtubePl
  • iOS 5 UIView drawRect 覆盖在设备上不起作用

    我正在准备在 iOS 5 GM 上发布我的 iPhone 应用程序 并遇到了 UIView 的错误 当我在子类上重写 drawRect 方法时 模拟器会显示所需的结果 但当我尝试在实际设备上测试时 drawRect 重写根本没有任何效果 我
  • Flutter-iOS 当应用程序更新/重新编译时存储的图像丢失

    嗨 请原谅我的英语 也是 flutter iOS 的新手 我在 iOS 上有一个关于 flutter 的应用程序 用户可以从他们的相机和图库中拍摄照片和视频 我正在使用 image picker 包 这没有问题 然后我将其保存在在其应用程序
  • 如何本地化 iOS 故事板

    我有一个包含一些视图的 iPhone 故事板 例如 导航项标题名为News 应翻译为其他语言 当我向故事板添加新的本地化版本时 它会为新语言创建当前故事板的副本 在这里我可以更改导航项的标题 但对我来说它似乎不太有用 如果我的故事板包含 1
  • supportedInterfaceOrientations 方法不会重写其超类中的任何方法

    在 UIViewController 中 这段代码 public override func supportedInterfaceOrientations gt UIInterfaceOrientationMask if let mainC
  • 如何将 NSMutableArray 添加到 NSMutableArray Objective-c

    我正在从 Java 切换到 Objective c 但遇到了一些困难 我已经搜索过这个问题但没有取得太大成功 我有一个存储 NSMutableArrays 的 NSMutableArray 如何向数组添加数组 您可以在数组中存储对另一个数组
  • 与 parse-server 和 auth0 的自定义身份验证集成

    我想将 auth0 com 与开源解析服务器结合使用 我当前的方法是通过 iOS 的 Lock 库使用标准登录从 auth0 获取令牌 使用该令牌 我想在解析服务器上调用自定义身份验证方法 该方法检查令牌是否有效 如果有效则将登录用户 我的
  • 在 Swift 中的 For 循环中更改对象的属性

    我创建了一个名为 ShoppingList 的简单结构 struct ShoppingList var shoppingListId NSNumber var title String var groceryItems GroceryIte
  • Apple 由于崩溃而拒绝了我的应用程序,无法重现它

    我刚刚上传了一个应用程序到应用程序商店 它是为ios 7开发的 他们拒绝了该应用程序 因为我无法重现崩溃 他们向我发送了这份崩溃报告 Exception Type EXC BAD ACCESS SIGSEGV Exception Subty
  • 从字典创建 Swift 对象

    如何根据 Swift 字典中的查找值动态实例化类型 希望这对其他人有用 我们需要进行一些研究才能弄清楚这一点 目标是避免巨大的 if 或 switch 语句从值创建每个对象类型的反模式 class NamedItem CustomStrin
  • 按升序对 NSDictionary 进行排序

    我正在尝试排序NSDictionary按升序排列 我正在使用这段代码 NSDictionary valDict self mGetDataDict key rowKey for NSString valueKey in valDict al
  • SDK 和 iOS 部署目标。

    我使用最新的 SDK 4 1 构建项目并设置 iOS 部署目标 3 0 如果我使用4 0 sdk的某些方法 我可以在真正的iPhone 3 0上运行我的项目吗 您只能在 OS 3 设备上运行您的项目 如果有条件地编码围绕您想要使用的 OS
  • “无法取消归档名为 UITableViewController 的元素”

    我一直在按照 构建你的第二个 iOS 应用程序 教程一步步进行 在教程承诺所有错误都会消失之后 我遇到了这个错误 但直到其他错误都出现后 该错误才出现 全部更正 我尝试编译它 错误 The document MainStoryboard i
  • Swift 单元测试 - 如何断言 CGColor 是它应该的样子?

    使用 Xcode V7 2 尝试进行单元测试 需要验证是否已设置正确的颜色 并收到以下消息 Cannot invoke XCTAssertEqual with an argument list of type CGColor CGColor
  • 如何将nsmutable数组添加到sqlite数据库表中

    如何将nsmutablearray添加到sqlite数据库表中 有人可以帮我编码吗 您可以使用 for int i 0 i lt mutArray count i NSString string mutArray objectAtIndex
  • Facebook 登录打开错误的应用程序

    我正在尝试使用 facebook 实现应用程序的登录 但每次我尝试登录时 它都建议打开错误的应用程序 我尝试了一些在这里找到的东西 但没有成功 在 Facebook 的开发者页面上我添加了一个后缀 我的 plist 如下 有谁知道发生了什么
  • 获取所有ios应用程序的全局列表[重复]

    这个问题在这里已经有答案了 我想对苹果应用商店进行一些全球统计 一个瓶颈是至少获取所有当前活动应用程序的 ID 这 9 位数字 有谁知道如何获取 iOS 应用商店中当前活动应用程序的所有 id 的完整列表 更好的是特定类别的所有 ID 例如
  • 具有隐式授权的 OAuth 应用程序中的客户端模拟

    来自 OAuth 草案 隐式section https datatracker ietf org doc html draft ietf oauth v2 31 section 1 3 2 在隐式授权流程期间发出访问令牌时 授权服务器不对客

随机推荐

  • 非阻塞IO是如何实现的?

    在 Java 或 C 或其他一些语言中 存在非阻塞 IO 设施 例如套接字 因此 我可以将回调函数提供给非阻塞 IO 一旦非阻塞 IO 接收到任何内容 它将调用我的回调 我想知道它们是如何实施的 如果我在幕后创建非阻塞 IO Java 或
  • 如何更改 django wagtail 的管理徽标

    我正在做一个小项目 我想我会付出wagtail http wagtail io 尝试一下 我现在想知道如何更改侧边栏中 wagtail 的管理徽标 下图左上图 我可以改变 static wagtailadmin images wagtail
  • 创建一个 MIME 电子邮件模板,其中包含要使用 python / django 发送的图像

    在我的网络应用程序中 我偶尔使用可重用的邮件应用程序发送电子邮件 如下所示 user self user subject My subject from email protected cdn cgi l email protection
  • iOS 通过 AFNetworking 2.0 上传图片

    我一直在寻找新的 AFNetworking 2 0 上传图像的示例 但我碰壁了 无法弄清楚代码出了什么问题 这是我使用的代码 NSData imageData UIImageJPEGRepresentation image 0 5 NSUR
  • PHP 中是否有 JQuery DOM 操作/CSS 选择器等效类?

    我知道我可以使用DOM文档 http us php net manual en class domdocument php and DOMXPath http us php net manual en class domxpath php操
  • RestKit - 离线存储后发送添加/编辑/删除的对象

    将 RestKit 与 Core Data 结合使用 当用户在没有互联网连接的情况下添加 编辑或删除对象时 我通过标记对象并将其与 Core Data 一起保存来提供离线支持 如果互联网再次可用 我将获取所有添加 编辑 删除的对象 将它们保
  • 为餐厅菜单创建点引线

    我正在尝试创建一个带有点领导者的餐厅菜单 但我遇到了麻烦 我正在寻找的格式是下面发布的图片 有人可以帮我解决这个问题吗 HTML div class dotted ol li h2 Test h2 p span Test 2 span sp
  • php如何限制用户每天登录一次以上

    有没有办法限制用户每天登录次数不超过一次 这在 PHP 中可能吗 如果是这样 你能指导我该怎么做吗 在我的数据库中 我有用户名和密码字段以及时间戳 我还应该添加什么 我尝试过这个 但问题是我不希望它受到限制IP并且应该尊重用户
  • 合并两个 xml 文件 LINQ

    我在合并两个 XML 文件时遇到问题 我将这两个文件加载到两个对象中 找到两个对象中的目标节点并尝试合并 这是一个示例 var nodes1 XResult1 Descendants subject var nodes2 XResult2
  • 静态只读字段初始值设定项与静态构造函数初始化

    以下是初始化静态只读字段的两种不同方法 这两种方法有区别吗 如果是 什么时候应该优先选择其中一个 class A private static readonly string connectionString WebConfiguratio
  • JPA。 JoinTable 和两个 JoinColumn

    我需要创建表 PORTATION MODEL SET 我需要从表 portation 创建两个密钥 从表phone model 创建一个密钥 我有代码 Entity Table name PORTATION SecondaryTable n
  • 为什么 Android Lint 在显式使用 Locale.US 时会警告 String.format 使用默认区域设置?

    我最初打电话String format这边走 return String format s f f anotherString doubleA doubleB 这使得 Android Lint 生成此警告 隐式使用默认区域设置是错误的常见来
  • 在 MongoDB 中,如何索引数组中的嵌入对象字段?

    多键的 mongodb 文档给出了查询数组中嵌入对象字段的示例 http www mongodb org display DOCS Multikeys http www mongodb org display DOCS Multikeys
  • 可垂直滚动的 GroupBox

    我正在使用创建一个应用程序Windows 申请表 我基本上是 C 和 Visual Studio 的新手 从昨天开始就一直在使用它 到目前为止 我已经成功创建了一个简单的表单 如屏幕截图所示 My Form 背景 细节 我正在使用框中提供的
  • 通过NotificationListenerService读取Google地图通知

    是否可以读取用户移动时定期显示的 Google 地图导航通知 例如 定期更新距下一回合的剩余距离 我尝试使用NotificationListenerService来实现此目的 但是当我尝试使用getNotifications getExtr
  • 使用react.js 在单页应用程序中导航

    我正在使用 React 和 Backbone 构建一个单页面应用程序 并试图找出处理应用程序中内容之间导航的最佳实践 我的应用程序将有一个侧边栏 其中包含链接 例如 照片 和 设置 侧边栏始终存在 因此单击 设置 后 我希望在不重新加载整个
  • TemporaryKey.pfx 出现问题 我没有密码

    我的一个客户有一个问题 他有一位 Microsoft CRM 开发人员 但他离开了 现在该项目仍未完成 我已经下载了自定义应用程序的源代码 并且我不想继续开发 我尝试过 ClickOne 部署 它会弹出一个与 myapp Temporary
  • ASP.NET Identity 2.1 将 PK 更改为 int 错误

    我已经按照中所述更改了 PKhttp www asp net identity overview extensibility change primary key for users in aspnet identity http www
  • 如何标记扩展宏(local :dir )?

    我知道我的标题令人困惑 因为tokenize命令被指定为一个字符串 我有许多文件夹 其中包含大量 独立的 命名不当的 Excel 文件 其中大部分是从网站上抓取的 手动选择不方便 需要依赖Stata扩展宏功能local dir阅读它们 我的
  • 如何像 Pinterest/Evernote 一样从 UICollectionView 过渡到 UIViewController

    我有一个 UICollectionView 当选择一个项目时 我希望它能够全屏显示动画 因此它会从单元格大小过渡到全屏并成为 UIViewController Pinterest 和 Evernote 都有这种行为 点击单元格会将单元格转换