首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

开源项目——『看知乎』iOS 版

网络请求、JSON 解析、异步图片加载等等全都是自己封装的,UI 布局主要是用 Storyboard 跟 AutoLayout 做的,开发语言采用 Swift。...用户排名: 获取某项指标(赞同数、粉丝数)排名前30的用户列表,点击单个用户转到该用户详情页。 用户详情页(显示效果模仿简书个人用户界面)显示用户近期动态和高票答案,点击具体答案转到答案详情页。...用户搜索,输入用户名或部分用户名直接搜索,搜索结果显示相关用户列表,点击单个用户转到该用户详情页。 项目展示 ? 首页.gif ? 首页答案列表.gif ? 答案详情.gif ?...至于点击菜单项显示不同数据的效果呢,乍一看跟我之前写过的多表视图有点像,但那个思路在这边是不太行得通的,因为列表上面的内容(菜单项、用户基本信息)都得进行滚动,如果按那个思路的话,同一维度(y 轴方向)...所以我们其实不必执着于各种说法,只要想想目前我们的 Controller 都做了些什么: UI 布局 协调各个 View 协调 View 和 Model 处理 View 的响应 …… 我们再来看看哪些是可以

1.2K50

swift4.0语法杂记(精简版)

取消了Objective-C的指针等其他不安全访问的使用 使用点语法来调用属性或者函数 去除了NS前缀 3、为什么要学习swift swift作为面向协议语言,不仅能写移动端,也可以做到搭建服务器端。...swift中有规定,对象的任何属性在创建对象时,都必须有明确的初始化5、可选绑定 用if let/var表示。...数组是有序数据的集,集合是无序无重复数据的集,而字典则是无序的键值对的集。 数组使用有序列表存储同一类型的多个。相同的可以多次出现在一个数组的不同位置。...8、类的属性监听器 在object-c,我们可以重写set方法来监听属性的改变,而在swift也可以通过属性观察者来监听和响应属性的变化。通常用于监听存储属性和类属性的改变。...对于计算属性则不需要定义属性观察者,因为我们可以在计算属性的setter中直接观察并响应这种的变化。 可以通过设置以下观察方法并响应这种的变化。

15.1K90
您找到你想要的搜索结果了吗?
是的
没有找到

春招路上孤独的iOSer的心路历程(面经)

2020年 1-20 1、2面 一面 1 tableview 重用机制 滑动性能调优方法 2圆角效率问题 离屏渲染 3calayer 与uiview 区别 为什么这么设计 4swift 消息机制 5 多线程如何保证线程安全...14.autoreleas谈谈 15.timer为什么在子线程不工作 16.为什么学iOS 2-25 二面 二面 17分钟 自我介绍 实习多久、学习过哪些语言 为什么选择iOS、学习iOS最大的困难...除了gcd group之外 其他方法 信号量与锁的区别 mvc和mvvm的区别 为什么swift开始学 如何学习iOS的 有什么要问的?...(由于感觉不错问了下评价) 1.评价 2.为什么UI只能在主线程刷新? 3-12 二面 40分钟 算法题:给定排序数组和一个sum,找到两个 等于这个sum。...第三题:手写代码 1、使用递归,计算1加到100的 2、使用递归,计算 n 加到 m的 (n < m) 3、使用递归,计算 n,n+t, n+2t, .... n+ mt 的 (m >=1)

2.4K20

Xcode10.2 继承UITableView协议失效

前言:在这次App版本迭代进入集成测试阶段尾声,正式环境打包release环境后,测试回归发现许多包含 tableView 的页面都无法响应点击事件。...问题症结: debug 模式下真机与模拟器调试,遵循的代理方法都可以正常执行; release 模式打包出来后,子类覆写的 TableView 相关协议 func tableView(_ tableView...) 方法无法正常执行,导致页面显示错误与点击事件无响应; 问题原因: Xcode 10.2 版本打包编译 bug。...官方论坛的 bug 反馈,找到了证据:Inference of @objc from witnessed protocol requirement fails sometimes 解决方案: 使用...Xcode 10.1 打包上线(若使用 swift 5 版本,此方案无效);xcode 10.2.1 swift UITableView部分协议方法不执行 在子类要覆写代理实现的方法前,添加 @objc

1.8K60

动手写个 JSON-Model Mapping 库

SwiftJSON解析方面有个比较有名的第三方库——SwiftyJSON,之前我也一直用的它。...object是一个计算属性,在给它赋值时,会对它的类型进行判断,然后把它的类型信息存储到实例属性type(type是一个自定义的枚举类型,这个枚举类型基本对应了 Swift 的几种基本类型),最后把...object的进行类型转化后赋值给JSON的一个特定类型的私有属性,譬如是数组的话就赋值给rawArray,是字符串的话就赋值给rawString,等等。...我写了个 Demo,联网获取数据到显示数据的整个流程如下: 先看看JSON数据的结构: ?...显示数据.png 使用就是这么简单,只要新建一个NSObject的子类,属性名保证跟 JSON 的一致,并给各个属性一个初始

1.2K30

Swift基础语法(四)

Result 在Swift5之前,我们一般是采用上面的方式来处理异常,在Swift5之后,苹果推出了一个Result枚举,Result枚举可以更加优雅地去处理异常。...所以在Swift5,新增了一个枚举Result,使我们能够更简单、更清晰地处理复杂代码的错误。...这里的Success代表正确执行的,Failure代表出现问题时的错误。...源文件:单个Swift源代码文件。注意,模块是包含源代码的。 访问权限 访问权限大到小依次为: open:允许实体被定义模块的任意源文件访问,也可以被另一模块的源文件通过导入该定义模块来访问。...为什么需要命名空间 简而言之就是一句话:为了避免命名上的冲突。 在开发,尤其是在多模块开发,很难保证模块之间的类名不会重复。为了保证不同模块下同名的类可以正常使用而不报错,此时就需要命名空间了。

3.9K20

在iOS怎样创建可展开的Table View?(下)

响应其他用户操作 在CustomCell.swift文件,你可以发现CustomCellDelegate协议的所需的代理方法都已经被声明.通过在ViewController类里实现它们我们需要设法让app...接下来,让我们处理在cell的开关吧.当改变了开关的,我们需要做两件事情:首先,设置合适的("Single"或"Married"),显示到对应的顶级cell上;之后,在cellDescriptors...总结 正如我开始说的,创建可展开的tableView在某些时候真的很有用,麻烦当中创建新的视图控制器,可以用这种tableView来处理,它可以为app节省时间.在这次教程先前的部分,我向你提出了一种创建可展开...tableView的方法,主要的特点就是在一个plist文件,所有cell的描述都使用具体的属性.我向你展示了当cell显示,打开或是选中的时候,如何使用代码处理cell的描述列表;此外,我给了你一个方法通过用户输入数据来直接更新它...(例如,将cell描述列表保存到文件),然而,那已经超出了我们的目标;我们最开始所想的是实现一个可展开的tableView,根据需求显示或隐藏cell,以及我们最终所做的.我相信,在这篇教程你会找到左右有用的信息

1.5K30

【iOS】仿知乎日报,RxSwift-Part1-首页搭建

首页导航栏效果演示.gif 刚开始导航栏的颜色是透明的,随着tableView向上滚动时,导航栏主键显示颜色。...的willDisplay方法,监听section的变化,刷新条件是:当滚动到最后一个section的第一个元素时,加载更多数据 func tableView(_ tableView: UITableView...其实我也这么觉得,初入RxSwift,不打算封装太多层,怕把自己绕进去了,所以就先这样写了~ 4、设置导航栏的titile日期 效果说明:随着列表的滚动,sectionHeader的日期会显示在导航栏上...同样地,需要在tableView的willDisplay方法做监听,监听方法如下: 1、获得当前列表显示的最小section func tableView(_ tableView: UITableView..., willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { // 获得当前列表显示的最小section

2.3K10

iOS - RxSwift 项目实战记录

// Response分类,Moya请求完进行Json转模型或模型数组 ├── Model │ └── LXFModel.swift // 模型 ├── Protocol...有的话那从今天开始就要认清楚这一点,【tableView其实是由section组成的】,所以在使用RxDataSources的过程,即使你的setion只有一个,那你也得返回一个section的数组出去...addDisposableTo(rx_disposeBag) 大功告成,接下来说说section序列的产生 ViewModel的规范 我们知道MVVM思想就是将原本在ViewController的视图显示逻辑...input,通过transform得到output,然后将我们output的sections序列绑定tableView的items LXFViewController.swift // 初始化input...转模型或模型数组后修改models,当models的被修改的时候会发信号给sections,sections在ViewController已经绑定到tableView的items了,所以此时tableView

2.9K41

iOS 9 Storyboard 教程(二下)

. ---- Note: 你永远不会手动调用prepareForSegue(_:sender:)方法.它是一条UIKit发出的信息,让你知道那个segue已经被触发了. ---- 在PlayerDetailsViewController.swift...试一下,现在你应该可以向列表添加新的玩家了! ?...现在让我们给这个新的控制器一些数据来显示吧.在GamePickerViewController.swift,把一个具有硬编码的games字符串数组添加到顶部: var games:[String]...你没有写任何代码调用新的控制器.你只是按住ctrl键并从静态table view cell拖拽出了新的控制器.你写的唯一的代码就是填充tableView的内容,这通常是更动态的而不是硬编码列表....在Main.storyboard里,按住ctrl把tableview的单元格拖拽到Exit,就想你之前做的一样,然后弹框中选择unwindWithSelectedGame:. ?

2.2K10

iOS 9 Storyboard 教程(二上)介绍Segue静态单元格(static cell)

这个列表都将显示所有的unwind方法(即一个带有签名的方法@IBAction func methodname(segue:UIStoryboardSegue)),所以确保你能认出你创建的名字代表的意思...选择Table View最顶部的Section(Document Outline).在Attributes inspector里,把Header属性的设置Player Name....–那就是为什么你的静态内容没有变量.是时候来解决它了!...为了避免出现这种情况,你应该让用户点击任何地方都能弹出键盘.那非常简单实现–只打开PlayerDetailsViewController.swift然后添加tableView(_:didSelectRowAtIndexPath.... ---- Tip: 当添加一个代理方法或者重写一个view controller的方法,只需要输入方法的名称(不用在前面加”func”),然后你将可以出现的方法列表里选择正确的方法. ---- 你也要在

3.2K10

iOS工程师必看的 20 道 面试题

解决方法是将Father的Son对象属性strong改为weak。...以scheduledTimerWithTimeInterval的方式触发的timer,在滑动页面上的列表时,timer会暂停,为什么?该如何解决?...Swift ,类是引用类型,结构体是类型。类型在传递和赋值时将进行复制,而引用类型则只会使用引用对象的一个"指向"。所以他们两者之间的区别就是两个类型的区别。...[image] Swift vs. Objective-C 15. 说说Swift为什么将String,Array,Dictionary设计成类型?...运行阶段,接收者self.tableview响应这个消息,期间可能会直接执行、转发消息,也可能会找不到方法崩溃。 所以整个流程是编译器翻译 –> 给接收者发送消息 –> 接收者响应消息三个流程。

3.6K40

窥探Swift之协议(Protocol)和委托代理(Delegate)回调的使用

显示的数据了,在正常开放这些数据往往来源于网络请求,而在本篇博客中就模拟数据源,来为我们的TableView提供显示的数据。...当前要显示TableView 3 4 - returns: TableViewSection的个数 5 */ 6 func numberOfSectionsInTableView...1 /** 2 返回每个Section的Cell个数 3 4 - parameter tableView: 当前显示TableView 5...1 /** 2 返回要显示的Cell 3 4 - parameter tableView: cell要显示TableView 5 - parameter...上面实例的意思就是把下一个页面的通过委托代理回调的形式传到上个页面中去,在前面的博客《窥探Swift之函数与闭包的应用实例》也做了同样的事情,不过之前我们是使用闭包(Closure)回调来实现的。

3.3K80

用这些 iOS 技巧让你的 APP 性能更佳

但你有没有想过为什么必须使用这个笨拙的 API,而不是只传递一个 TableViewCell的数组?让我们来看看为什么。 假设你有一个有一千行的表视图。...在多任务屏幕,我们可以看到已放在后台的应用程序列表。我们可以假设这些应用程序仍在后台运行;实际上,由于内存的需求,一些应用程序可能会被系统杀死并重新启动。...您是否曾体验过,多任务屏幕恢复应用程序后,该应用程序显示的用户界面与多任务视图中显示的快照有什么不一样? 这是因为应用程序没有实现状态恢复机制,当应用程序在后台被杀死时,显示的数据丢失。...对于在具有较高 QoS 的队列中分配的任务,操作系统将分配更多的 CPU 时间、CPU 功率和 I/O 吞吐量,这意味着任务将在具有更高QoS的队列更快地完成。...较高的 QoS 也会因使用更多资源而消耗更多能量。 以下是最高优先级到最低优先级的 QoS 列表: ?

3.2K30

Swift 网络请求数据与解析

看看在Swift是在怎样请求数据,解析数据加载图片这些的,也使我们最基本最常见的用法了,先说说这几个三方库:      第一个: Alamofire  (它的原作者就是AFNetworking的原作者...Git地址:https://github.com/Alamofire/Alamofire     第二个: SwiftyJSON  一个解析JSON数据的三方库,使用swift写的,中间帮你省去swift...的各种可选的操作,很简便(推荐!)    ...尽量别做一个我知道那样可以,但我不知道为什么的孩纸哈!!还是给整个文件代码给大家看,完成清晰点!...B 这是一个 NIL合并运算符,它的作用是如果 A 不是NIL 就返回前面可选类型参数 A 的确定, 如果 A 是NIL 就返回后面 B 的

2.4K80

Swift| 基础语法(五)

前言 总结下 swift下的基础语法,里面涉及到:常量&变量、Swift的数据类型、逻辑分支、循环、字符串相关、数组和字典、方法的书写调用等内容,考虑到阅读体验分多篇来展示,希望对大家学习swift...} 在Swift,创建tableViewCell的方法可以分为两种创建tableView时候注册和需要使用时手动创建。先聊聊创建tableView的时候直接注册cell: myTb?....可以在自定义cell处理点击状态下的显示 var label1 :UILabel? var label2 :UILabel?...(不包含5)会自动生成一个more视图标签,用来控制第5、6、...以后的视图控制器。...因为在Swift,所有对象的构造器默认都是public,所以需要重写你的init让其成为私有的。 这样就保证像如下的代码编译报错,不能通过。 六、相册选择照片或者拍照 ?

2K30

扫码

添加站长 进交流群

领取专属 10元无门槛券

手把手带您无忧上云

扫码加入开发者社群

相关资讯

热门标签

活动推荐

    运营活动

    活动名称
    广告关闭
    领券