iOS - 天气预报仿写总结

天气预报仿写总结

文章目录

模糊搜索

这一部分就是网络请求获取实时搜索的数据并更新搜索结果的TableView

主要的难点在于网络请求部分,感兴趣的同学请移步上一篇文章【OC】网络请求

该项目中所有的网络请求,JSON数据解析和城市天气所有数据Model都封装成单独类,这样使用的时候直接调用即可

  • 模糊搜索部分我使用了UISearchController来展示搜索栏和搜索结果,updateSearchResultsForSearchController:searchController在该函数读取用户每次的键盘输入,之后调用你的请求函数接入实时搜索API获取你的城市数据,最后reloadData重新加载你的搜索结果tableView(注意这里要做一个防抖测试 ,核心思想就是等用户停止输入一段时间再发送请求,而不是很短时间内每输入一个字符就发送请求,这会产生很多无意义的请求)

天气详情页

天气详情页push的过程中我会传入刚刚点击cell并调用网络请求获取的该城市天气的所有数据,这样在该页面只需要专心做UI即可

  • 该页面主要是一个tableView,在小时预报和方框卡片这里嵌套collectionView,在每日天气这里嵌套tableView,并且使用UITableViewStylePlain系统会给每组header自动吸顶

    观察过苹果原生天气预报在上滑的过程中城市温度和城市名会逐渐消失,并且城市名会吸顶,我的思路是scrollViewDidScroll:(UIScrollView *)scrollView监听用户滚动,在该函数中获取滚动数据并实时更新UILabel的alpha,达到上滑过程中逐渐消失,对于城市名吸顶则是在navigationItem.titleView这里再添加一个城市名,在上滑的过程中self.tableView.tableHeaderView里的城市名逐渐消失,导航栏这里则是逐渐出现

  • 可以在对你的tableView添加和每一个cell一样角度的圆角,这样在滑动的过程就可以更贴合苹果原生UI界面

  • 每张卡片背景使用的是毛玻璃效果并且降低毛玻璃的透明度

  • 添加按钮则是将该城市的城市数据添加到所有城市的数组里,注意同一城市不能重复加

天气主页

主页就是一个UITableView展示所有添加到主页的城市,添加的时候由于所有城市的Model是一个单例,所以在天气详情页对NSMutableArray添加数据也会同步过来,每一个cell点开用模态视图推出刚刚的天气详情页即可

这里点击后推出的视图支持翻页功能,我这里用的是UIPageViewController,其实也可以用scrollView来做,但是这个的翻页就要自己维护比较麻烦

返回按钮这些可以使用iOS 26新出的液态玻璃UIButtonclearGlassButtonConfiguration模式

UIPageControl这里我在他的下面放了一个空白UIButton,再对UIButton进行约束让UIPageControl撑起UIButton的大小,这样这个圆点就也有液态玻璃的效果

城市天气编辑

这里编辑的按钮我用到的是UIMenu控件,点击UIAction后打勾和不打勾的变化比较麻烦,可以参考学长的这篇博客UIMenu的简单实用

编辑cell我使用的是[self.tableView setEditing:YES animated:YES]tableView的编辑状态转换,只需要删除model里的该城市数据,并[self.tableView deleteSections:[NSIndexSet indexSetWithIndex:indexPath.section] withRowAnimation:UITableViewRowAnimationAutomatic]

删除对应tableView即可,也可以直接全部重新加载reloadData

相关推荐
Coffeeee2 小时前
ios零基础的Android开发能否靠AI让老板省一笔人工费呢
android·ios·ai编程
2501_916007473 小时前
深入理解HTTPS对称与非对称加密机制及Charles抓包实践
网络协议·http·ios·小程序·https·uni-app·iphone
2501_916008893 小时前
HTTPS 抓包遇到证书绑定怎么办,使用 TraceEagle 解除 App 证书校验
网络协议·计算机网络·http·网络安全·ios·adb·https
2501_915921435 小时前
从零开始学 Swift iOS 开发 iOS应用入门
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
末代iOS程序员华仔5 小时前
Swift 的角色演变:从“主角”到“最佳配角”——iOS 应用被 Flutter 替换,Swift 变成辅助?
flutter·ios·swift
末代iOS程序员华仔1 天前
Cursor + GitOps:自动化运维新姿势
flutter·ios·swift
世界尽头与你1 天前
iOS 越狱检测原理
安全·网络安全·ios·信息安全·渗透测试
_瑞2 天前
AI Coding 那么快,为什么还需要 SDD?
人工智能·ios·ai编程
轩辕十四leo2 天前
Astrolabe(星盘):让 AI 看见自己写出的 UI
ios·ai编程