使用swift实现的iOS端多图预览
前言
最近因工作需要学习了iOS相关开发技术,使用swift语言参与了部分需求的独立开发,其中,实现图片浏览器的需求在开发过程中发现和安卓端实现差异较大,于是便创建一个新项目,重新实现了一个可复用的图片浏览器demo,这里记录了iOS项目的整体从零到一的开发过程中遇到的坑,加深自己swift开发能力。
源码
https://github.com/zhujiaming/XUIImagePreviewer.git
实现原理
iOS的UIScrollView居然有缩放页面的效果(安卓真没这个特性),类似WebView的网页的缩放,所以基于UIScrollView实现了图片的预览切换,可以方便的查看多张图片。
新建工程
无storyboard的配置错误
删除storyboard配置运行过程中遇到报错:
Could not find a storyboard named ‘Main’ in bundle NSBundle …
删除main.storyboard的相关配置时,按照网上步骤发现这个配置不存在了,xCode项目中并没有Main Interface的选项。
真是奇了怪了,可能是版本更新导致的,只能靠检索关键字来查找了,通过以文本方式打开 project.pbxproj
,搜索 Main
就找到了这个配置所在的位置:
反向定位,原来是搁这了:
最后删除了这个配置,成功运行。
引入Pod库
pod命令报错
需要在项目根目录下执行 pod init
,生成一个 Podfile 文件,但命令始终报错:
/Library/Ruby/Gems/2.6.0/gems/cocoapods-1.12.0/lib/cocoapods/user_interface/error_report.rb:34:in `force_encoding’: can’t modify frozen String (FrozenError)
查询一番资料后发现应该和xcode版本有关,需要将 Project Format 的Xcode 14.0-compatible 设置为:Xcode 13.0-compatible
开发过程
路由跳转无效
pushViewController未执行路由跳转
需要将rootViewController设置为UINavigationController:
self.window?.rootViewController = UINavigationController(rootViewController: MainViewController())
预览图片初始位置不居中
由于预览图片是基于UIScrollView实现,UIScrollView与整个屏幕有联动效果。
进入图片预览页面后,发现初始显示的图片位置始终居下,点击屏幕后就恢复到中间位置了。
分析原因
不居中时,根据背景色判断scrollView处于全屏状态,这种只有滚动时才出现,所以可能是系统的某种联动效果,导致初始时scrollView计算的高度没有按照实际内容的高度而是按照屏幕高度计算的。
处理
设置 UIViewController
的 edgesForExtendedLayout = []
edgesForExtendedLayout是一个UIViewController的属性,用于指定视图控制器的视图是否延伸到边缘。它可以设置为left、right、top、bottom、all、none或这些组合。在iOS 7及以上版本中,默认情况下,视图控制器的视图会延伸到屏幕的边缘。可以通过设置edgesForExtendedLayout属性来控制视图是否延伸到导航栏、状态栏等系统提供的视图下面。例如,将edgesForExtendedLayout属性设置为UIRectEdge.bottom可以让视图控制器的视图不延伸到底部。
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgififf
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13