当前播放: 23 | iOS中文字的展示:UILabel的使用与布局
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
课程目录
第一章:课程简介和开发前的准备 (4讲)
01 | 课程介绍
免费
02 | 内容综述
免费
03 | 常见App类型及技术栈浅析
免费
04 | 使用Xcode创建第一个工程
免费
第二章:实现App的基本界面 (33讲)
05 | MVC模式:iOS中的架构基石
免费
06 | iOS中的视图UIView
免费
07 | 了解UIView的生命周期
08 | 视图的控制器UIViewController
09 | 结合视图和控制器构建Tabbar样式页面
10 | 使用Navigation构建App的基础交互
11 | iOS基本页面框架的构成和实现
12 | 系统函数中常见模式Delegate
13 | UITableView简介
14 | UITableView中Delegate和Datasource的使用
15 | UITableViewCell的复用及原理
16 | 结合子视图实现完整的列表界面
17 | UICollectionView的基本应用和实现
18 | UICollectionViewLayout的应用
19 | 基本列表视图的选择和使用
20 | 滚动视图的基类UIScrollView简介
21 | 应用UIScrollViewDelegate实现复杂逻辑
22 | iOS中滚动视图对比及App内应用场景浅析
23 | iOS中文字的展示:UILabel的使用与布局
24 | iOS中图片的展示:UIImage与UIImageView的应用
25 | iOS中按钮的实现:UIButton的使用
26 | UIControl以及Target-Action模式
27 | 使用UIGestureRecognizer实现自定义点击与手势
28 | 通过UIAlertView了解UIKit系统函数的设计和使用
29 | Web基础知识及WKWebView 介绍
30 | 使用WKWebView及Delgate实现简单的页面加载
31 | 认识观察者模式KVO并展示页面加载进度
32 | iOS开发中的Web应用浅析
33 | 使用UIView动画完善界面的交互
34 | 动画背后的CALayer基本应用
35 | CoreAnimation及开源动画框架介绍
36 | 常用代码规范和重构方式
37 | 结合UIKit分析常用App的页面结构
第三章:实现App的基础功能 (35讲)
38 | 网络基础及请求的封装
39 | NSURLSession基础原理、组织和使用
40 | 使用系统网络架构NSURLSession加载网络数据
41 | 常用框架集成方式Submodule、Carthage和CocoaPods对比和使用
42 | 集成和使用开源网络框架
43 | iOS中的JSON解析
44 | 使用结构化的数据进行解析和展示
45 | 实现列表数据加载、解析和展示的完整流程
46 | iOS沙盒机制和文件结构
47 | 使用NSFileManager操作和管理文件
48 | iOS中的序列化NSCoding
49 | 开源存储方案对比与分析
50 | 缓存新闻列表数据及已读状态
51 | iOS中线程的基础知识及NSThread
52 | GCD的常用方法分析和使用
53 | 了解Operation、Runloop以及多线程开发总结
54 | 如何管理App中的图片下载与存储
55 | 开源图片框架接触的架构和使用
56 | 了解iOS系统的音视频框架
57 | 重构视频列表展示视频
58 | 实现简单视频播放器AVPlayer
59 | iOS消息机制NSNotification简介
60 | 使用Notification接收和处理播放状态通知
61 | 使用KVO监听和处理播放资源的状态变化
62 | CMTime及播放缓冲进度的获取和使用
63 | 使用单例模式重构播放器业务逻辑
64 | 常用App视频业务及流程浅析
65 | AutoLayout简介
66 | 使用AutoLayout实现通用ToolBar视图
67 | iOS常用布局方式选择
68 | 逻辑分辨率适配
69 | 物理分辨率适配
70 | 使用ImageAsset管理图片资源
71 | iPhone X适配
72 | iOS开发适配常用方法总结
第四章:App功能扩展和完善 (34讲)
73 | App启动过程及生命周期分析
74 | 通过App生命周期回调实现启动页
75 | 使用URL Scheme进行App间的唤起和通信
76 | Universal Link简介
77 | 常用组件化Target-Action方案
78 | 常用组件化URL Scheme方案
79 | 常用组件化Protocol-Class方案
80 | 实现简单的第三方登录和分享功能
81 | iOS中静态库的制作和使用
82 | iOS当中Framework的制作和使用
83 | OAuth和OpenID原理和使用
84 | 集成QQ SDK实现登录和分享功能
85 | iOS中常用日志和上报系统浅析
86 | 类CocoaLumberjack日志框架架构浅析
87 | Crash的类型介绍和常用收集方案
88 | 常用上报技术方案对比和分析
89 | iOS中定位和定位权限
90 | 定位功能实现和位置信息的获取
91 | iOS中推送和推送权限
92 | 使用UserNotifications实现本地推送
93 | 远程推送与APNs简介
94 | 使用UserNotifications接收远程推送
95 | iOS图标管理和动态更新
96 | iOS App Extension简介
97 | 实现Today Extension以及数据共享
98 | UITextField和UITextView
99 | 使用UITextField实现搜索条
100 | 使用UITextView实现输入框
101 | 复杂列表页实现方案及IGListKit浅析
102 | 复杂内容页展示逻辑及实现方案浅析
103 | App的签名原理和证书申请
104 | 常用iOS唯一标识符
105 | App的打包和上架流程
106 | 课程总结和结束语
23 | iOS中文字的展示:UILabel的使用与布局

23 | iOS中文字的展示:UILabel的使用与布局

朱德权
腾讯高级工程师
106讲 106课时,约1000分钟2264
单独订阅¥129
2人成团¥99
本节摘要
登录 后留言

精选留言(13)

  • 大土豆
    确实是国内最好最新的iOS入门课程了,高级Android开发工程师路过,毫无压力地上手了,老师加油!!!

    作者回复: 一起加油!

    2019-08-02
    1
    2
  • 朱成亮
    老师,有一个问题不理解,在.h文件里面已经有@interface ... @end;在对应的.m文件为什么还要有@interface ... @end呢? .m里面的一般会怎么去用呢?谢谢.

    作者回复: .m里面的interface其实就是类扩展的一种方式,可以看到在类名字的后面加了括号,但是没有继承的声明。这种扩展方式也可以写在其他文件,用于扩展一些特殊的属性和方法,比如流行的SDWebImage就对各个基础的UI类做了扩展。对于你问题中的实现方式,在.h.m中使用类似的扩展,其实就是将私有的属性写在.m文件中,只将对外暴露的属性和方法写在.h中。

    2019-08-03
    1
  • 乐只君子
    dequeueReusableCellWithIdentifier 返回类型是 UITableViewCell 竟然可以隐式转为 GTNormalTableViewCell 吗?这不“安全”吧?
    2020-02-04
  • 朝如青丝暮成雪
    GitHub看不到之前的提交记录,找不到这一节的代码,iOS13运行出现问题

    作者回复: UILabel应该在iOS13的开发上没有明显的改变。 能描述下具体的问题,或者有什么报错或者Log麻烦提供下,或者上传下代码,我帮你看下。

    2020-01-09
  • xhyujian
    这样纯代码设置样式和位置真的很麻烦,老师没有考虑过用xib来设置样式吗,那样真的很方便

    作者回复: 方便往往带来的是不够灵活和深入。当然对于一个中小型App不使用纯代码是没有问题并且能胜任的,但是对于大型的App,无论从需求的复杂程度、组件的封装复用、性能的深入优化等,以及多人协作管理方面,frame都会带来很多的便利。当然两种方式背后的原理和布局思路是一致的,只是在实现的层面略有不同,掌握了一种也可以很快的切入另外的一种。

    2019-11-21
  • RamboPan
    有个小建议,就是用一些值的时候,简单说下,比如 origin 和 size ,看了几次之后想明白是,origin 可能是该 View 左上角的 x,y ,Size 是宽高。
    我感觉有一定开发基础的人应该能猜中,但是接触开发少的朋友,可能暂时没反应过来,可以下次说细点。😀

    作者回复: 好的,如果时间允许的话也建议您跟着视频动手实现一遍代码,会加深记忆~

    2019-08-07
  • 洋之
    你好,设置子视图frame的时候在init里面设置比较好,还是在layoutSubviews 里面更好呢?

    作者回复: 这个问题的前提,是通常情况下layoutSubviews会调用多次,包括view尺寸变化的时候,init只会调用一次。所以对于依赖父View bounds变化的子view来说,设置frame 最好放到layoutSubviews中随时的响应调整,而不依赖的子view其实放到哪里都可以。

    2019-06-12
  • 无名
    uitableview 动态计算高度不讲吗

    作者回复: 后续课程会讲

    2019-05-25
  • 无名
    在项目中不用自动布局吗?一般老师在项目中是怎么选择使用什么布局方式的?

    作者回复: 后续的课程会讲

    2019-05-25
  • keep move
    每个cell都连在一起了,没有达到效果

    作者回复: 后续会伴随其它知识的讲解,逐步的实现效果

    2019-05-20
  • FutureEye
    你好 请问怎么把 UILable 这个空间垂直居中显示在 Cell 中呢?

    作者回复: 1. 设置label的center中的y,为cell高度的一半
    2. 设置label的original中的y,为(cell高度-label高度)/2

    2019-05-19
  • 海纳百川
    这一课不错
    2019-05-17
  • 起风了001
    第一次看到这种oc语法..之前没用过, ({
        code....
        return_value
    })

    作者回复: gcc的一种扩展,具体可见https://gcc.gnu.org/onlinedocs/gcc/Statement-Exprs.html 在代码多的时候很好用

    2019-05-15
收起评论
看过的人还看
iOS开发高手课

戴铭  前滴滴出行技术专家

46讲 | 11654 人已学习

¥99
Flutter核心技术与实战

陈航  美团点评高级技术专家

47讲 | 6647 人已学习

拼团 ¥79 原价 ¥99
Swift核心技术与实战

张杰  美团点评高级技术专家

120讲 | 1607 人已学习

拼团 ¥99 原价 ¥129
趣谈网络协议

刘超  网易研究院云计算技术部首席架构师

51讲 | 41213 人已学习

拼团 ¥79 原价 ¥99