李洪强原创博客01
每周一篇原创博客
时间: 2017年10月30日--2017年11月3日
iOS11适配的那些坑
01 适配titleView
iOS11 navigationItem.titleView 适配问题,最近由于Apple 更新了iOS 11版本,在系统升级之后,发现项目中之前适配好的titleView 发生了如下变化:
iOS 11 之前
iOS 11
WTF?
在iOS 11中titleView的宽度设置了没有效果,也没有拉伸展示,缩成一坨了。项目中有好多地方用到了titleView这个属性,怎么办?
打开Xcode 查看视图层级功能,发现在iOS 11 中Apple 改变了UINavigationBar的视图层级,titleView不是加到NavigationBar上了,而是加到UINavigationBarContentView上
那么怎么解决这个问题呢?
在你自定义的titleView中重写intrinsicContentSize 的Get 方法,如下:
- (CGSize)intrinsicContentSize
{
return UILayoutFittingExpandedSize;
}
然后再次运行项目,你会发现和之前的效果一样了。
02 Xcode调试
1. 手机连接上Xcode,打开Xcode菜单:Windows->Device and Simulators。找到连接上的设备,把Connect vianetwork选项打勾。
之后Xcode将会转一会圈圈,耐心等待一会就成功了,此时拔掉数据线,可以看到左侧的设备连接列表上手机仍在。
注意: 如果点击Connect via network时,出现如下弹框, Passcode Required, The device musthave a passcode set in order to allow this operation (0xE8003FFE).
可能手机未设置开机/锁屏密码导致,设置手机密码,然后再次点击Connect via network,可以正常连接,之后关掉手机密码后也可正常连接;
2. 运行我们的项目,在设备列表中不出意外会看到我们的无线连接的手机。选择手机后运行;
3. 如果此时是跑不起来的。还需要最后一步,回到刚刚的设备列表中,选中手机右键,在出来的选项卡中选择一个Connect via IP Address项。选择之后输入手机的局域网ip地址。
完成后可以看到在连接的手机右边有一个地球连接标志,长这样:
以后项目运行,在下拉列表如果手机在局域网中也会有这个标志:
4. 最后一步,选择后直接运行,不出意外的话,项目无需数据线就跑起来了,
另外:此方法是支持无线调试的,连一次以后就不需要数据线了了~
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决