项目环境:
macOS Monterey 12.6.3
xCode 14.2 (14C18)

前言

最近因工作需要学习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选项

image.png

真是奇了怪了,可能版本更新导致的,只能靠检索关键字查找了,通过文本方式打开 project.pbxproj ,搜索 Main找到这个配置所在的位置

image.png

反向定位,原来是搁这了:
image.png

最后删除了这个配置,成功运行

引入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

image.png

开发过程

路由跳转无效

pushViewController未执行路由跳转

需要将rootViewController设置为UINavigationController:
self.window?.rootViewController = UINavigationController(rootViewController: MainViewController())

预览图片初始位置居中

由于预览图片是基于UIScrollView实现,UIScrollView与整个屏幕联动效果
进入图片预览页面后,发现初始显示的图片位置始终居下,点击屏幕后就恢复到中间位置了。

分析原因
居中时,根据背景色判断scrollView处于全屏状态,这种只有滚动时才出现,所以可能是系统的某种联动效果,导致初始scrollView计算高度没有按照实际内容高度而是按照屏幕高度计算的。

处理
设置 UIViewControlleredgesForExtendedLayout = []

edgesForExtendedLayout是一个UIViewController的属性用于指定视图控制器视图是否延伸到边缘。它可以设置为leftrighttopbottom、allnone或这些组合。在iOS 7及以上版本中,默认情况下,视图控制器视图会延伸到屏幕的边缘可以通过设置edgesForExtendedLayout属性控制图是否延伸到导航栏、状态栏系统提供的视图下面。例如,将edgesForExtendedLayout属性设置为UIRectEdge.bottom可以让视图控制器的视图不延伸到底部

原文地址:https://blog.csdn.net/sinat_25904527/article/details/130938450

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_36656.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注