本周还是比较轻松的,小程序开发也接近了尾声,就是一些简单的修改了。我也就有了时间来回归老本行,重写iOS。这周我花了一些时间来把之前仿写的Swift项目完成。这个应用比较简单,但是实用点还是不少的。下面听我一一道来。

首先是搭建框架,在之前OC中我有自己的一套框架,用起来比较顺手。于是在swift中我也准备弄一套类似的框架。在最开始我失败了。在我创建父控制器的时候,我创建新的子控制器继承他发现不能自动生成viewdidload()方法。后来慢慢就好了,这应该是编译器的问题。靠苹果自己解决了。

然后是声明一些常见的宏定义,这个就比较简单了。只需要声明一个文件即可,但是需要注意写法

接下来就是重点了。由于这个项目我打算纯swift编写,于是一些之前常用的三方库都不能使用了。我就只能在github上查找一些比较好用的Swift库。

pod 'Alamofire'
pod 'Kingfisher'
pod "ESTabBarController-swift"
pod 'GTMRefresh'
pod 'SnapKit'
pod 'SwiftyJSON'
pod 'XHToastSwift'
pod 'JXPhotoBrowser'

这里面涵盖了网络请求、图片加载、下拉刷新、数据存储、页面创建、图片查看等等常见功能,基本上常见APP上的功能都可以靠它们实现。使用方法我就不在这里贴出了。可以去网上查找,也可以去我的github上下载我的项目。

在这个项目中我使用了tableview和collectionView这些常见列表,进行了数据存储、加载查看保存图片,网络请求、数据解析。在开发中也遇到了一些困难。在下面我就把这些问题和解决方法一一列出。

1.navigation添加搜索框

navigationItem的titleView不能直接设置成searchbar。

原因如下,如果设置成searchbar设置frame之类的会变形,且不好监控。这时候我们可以先设置一个UIView,在UIView上添加searchbar,然后后UIView设置为titleView。

2.navigation添加搜索框取消第一响应

这个就是我自己的问题了。是我自己开始没考虑对方向。我在父控制器中添加了点击手势,再点击的时候取消第一响应。

self.view.endEditing(true)

可是我在这里失败了,我开始没想到为什么,于是我在viewWillDisappear()中也写了上面的代码,还是不行。

最后我终于想到了为什么。self.view不包括导航栏

override func endEditingAction() {
self.view.endEditing(true)
self.navSearchBar.resignFirstResponder()
// 或者 self.navSearchBar.endEditing(true)
}

3.设置edgesForExtendedLayout

在oc中我一般把这个设置为none来使坐标原点从(0,0)变到(0,64)。于是在父控制器中我也就写了这个,结果坐标原点从(0,64)变到了(0,128)。纠结了半天 不知道为什么。然后只能取消掉这行代码。

下面我认为写的几个比较好的博客,如果你这个理解不清楚的可以看一下

参考文档:博客一博客二

【iOS - 周总结】开发中遇到的小知识点(2019.01.14-2019.01.19)的更多相关文章

  1. iOS开发中关于UIImage的知识点总结

    UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage.今天我们主要聊一聊UIImage的三个属性: image ...

  2. Android开发中实现桌面小部件

    详细信息请参考原文:Android开发中实现桌面小部件 在Android开发中,有时候我们的App设计的功能比较多的时候,需要根据需要更简洁的为用户提供清晰已用的某些功能的时候,用桌面小部件就是一个很 ...

  3. Hybrid App 应用开发中 9 个必备知识点复习(WebView / 调试 等)

    前言 我们大前端团队内部 ?每周一练 的知识复习计划继续加油,本篇文章是 <Hybrid APP 混合应用专题> 主题的第二期和第三期的合集. 这一期共整理了 10 个问题,和相应的参考答 ...

  4. JAVA开发中遇到的小白点

    这里主要是自己个人开发中遇到的一些小问题,自己攒起来,来弥补自己薄弱的JAVA基础,大神不要见笑 1. DateFormat格式化的HH和hh区别: public static boolean com ...

  5. iOS静态库开发中对Bitcode的支持

    1.bitcode bitcode是LLVM编译器将C/C++/OC/Swift等前端变成语言编译成多种不同芯片上的机器指令过程中的中间代码.并且这个中间代码是CPU无关的. 原本我们的APP里要包含 ...

  6. Hybird App 应用开发中5个必备知识点复习

    前言 我们大前端团队内部 ?每周一练 的知识复习计划还在继续,本周主题是 <Hybird APP 混合应用专题> ,这期内容比较多,篇幅也相对较长,每个知识点内容也比较多. 之前分享的每周 ...

  7. 【Hybird】274-Hybird App 应用开发中 5 个必备知识点复习

    前言 我们大前端团队内部 ?每周一练 的知识复习计划还在继续,本周主题是 <Hybird APP 混合应用专题> ,这期内容比较多,篇幅也相对较长,每个知识点内容也比较多. 之前分享的每周 ...

  8. easyui中的combobox小知识点~~

    一直使用的easyui中,一些不为人知的小知识点,与君共勉: 1.combobox设置高度:使用panelHeight属性: 2.combobox本身自带“自动补全”功能,但是在浏览器中是有限制的,在 ...

  9. C#、Java中的一些小知识点总结(持续更新......)

    前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ...

  10. ios开发中的一些小技巧

    1.如果在程序中想对某张图片进行处理的话(得到某张图片的一部分)可一用以下代码:   UIImage *image = [UIImage imageNamed:filename]; CGImageRe ...

随机推荐

  1. MongoDB入门实战教程(2)

    上一篇我们了解了MongoDB的基本概念与单节点环境搭建,本篇我们来学习如何搭建一个高可用的复制集集群. 1 关于MongoDB复制集 MongoDB复制集的主要意义在于实现服务的高可用,它是Mong ...

  2. SqlServer查看某个表的索引详细信息

    SELECT TableId=O.[object_id], TableName=O.Name, IndexId=ISNULL(KC.[object_id],IDX.index_id), IndexNa ...

  3. 前端开发系列006-基础篇之JavaScript数组基础

    本文将介绍JavaScript语言中的数组,全文内容包括但不限于数组的简单介绍.数组的创建.数组中元素的访问.数组的类型以及数组相关的核心方法等内容,需要指出的是ES6 + 的数组相关特性并没有被纳入 ...

  4. java 核心编程 toolbar

    简介 toolbar code /* * @Author: your name * @Date: 2020-11-08 09:38:15 * @LastEditTime: 2020-11-08 10: ...

  5. js\jquery下载本地txt文档

    有一个功能,是需要将相对位置下txt文件读取,并下载:相对路径:"../../assets/download/版本更新日志.txt" 利用a标签进行如下设置,结果只是预览内容,没有 ...

  6. SciTech-EECS-Devices-Phone: 拆机短接进入 CPU产商提供的 "紧急修复模式":高通9008端口模式(EDL Mode)+

    刷机常识: 拆机+短接进入CPU产商的紧急修复模式: 高通9008端口模式(EDL Mode) 关于短接测试点的 什么是测试点? 手机的测试点是在手机主板上特意设置的特定位置, 在手机生产测试.维修以 ...

  7. SciTech-BigDataAIML-Methodology方法论-Whole+Part整体和局部-$\large Supervised\ Statistical\ Model$统计模型和大量训练数据+Transformer核心原理+ MI移动互联+IoT万物互联-Economics经济-Politics政策

    词汇 MI(Mobile Internet): 移动互联网 IoT(Internet of Things): 万物互联网 WE(Word Embedding): 词嵌入 PE(Positional E ...

  8. 又是一个里程碑,轻松超过200k

    7月17日,我刚为免费在线拼图工具的访问量突破100k而发了喜报,没想到才过了不到一周,7月23日这个数字就再次翻倍,超过了200k 如此迅猛的流量增长着实让我震惊,这在上一周还不敢想象,在一个月前更 ...

  9. 软RAID(Software RAID)和硬RAID(Hardware RAID)区别

    在Linux存储系统中,软RAID(Software RAID)和硬RAID(Hardware RAID)在实现方式.性能.应用场景及管理上存在本质差异.以下从五个维度详细解析其区别: ⚙️ 一.实现 ...

  10. OpenLDAP 核心使用场景以及应用场景

    以下详解 OpenLDAP 的使用场景与核心架构,结合企业级实践和技术原理展开说明. ​​一.OpenLDAP 核心使用场景​​ 1. ​​企业用户身份集中管理​​ ​​统一认证​​:集中存储员工账号 ...