ProjectBySwift-02-CustomFont
来源:互联网 发布:比尔盖茨编程水平 编辑:程序博客网 时间:2024/06/16 12:42
第二个Swift小练习
写这篇博客的目的:总结内容,记录学习;
【说明】:
1.该系列Swift项目联系均来自gitHub上一位大牛的贡献:https://github.com/allenwong/30DaysofSwift;
2.如果任何不对或者不适合的地方请多多指教。
【小练习的功能】
1.点击changeFont按钮会更改文字的字体
2.使用控件:UItableView、UIButton
3.界面展示:
【知识点】
1.as!的作用
【说明】这是一段设置导航栏title颜色和字体大小的代码。其中用到了as?,在这里的作用是类型转换,将dict这种类型转换为 [String : Any]类型。
2.注册系统cell
第一种方法:
tableView?.register(UITableViewCell.self, forCellReuseIdentifier: "systemCell")
第二种方法:
tableView?.register( UITableViewCell.classForCoder(), forCellReuseIdentifier: "systemCell")
【说明】
OC中注册系统cell:
[_tableView registerNib:[UINib nibWithNibName:NSStringFromClass([UITableViewCell class]) bundle:nil] forCellReuseIdentifier:@"UITableViewCell"];
类比一下你就会明白UITableViewCell.self
是指UItableView这个类。而classForCoder()
的声明是这样的var classForCoder: AnyClass { get }
,可以获取到任何类。
3.在extension中写协议方法
这个延展是独立于类代码之外的。你想想OC中很多协议方法都在同一个类中是不是很乱,Swift已经都将它放在一起了,这样会代码会看着舒服些。另外你按照OC的传统写法也是可以的啊。但是Swift推荐用extension。
4.cell中不用判断是否为nil
参考3的图片,可以看到,因为当我写上` if cell == nil {
cell = UITableViewCell.init(style: UITableViewCellStyle.default, reuseIdentifier: "systemCell")
}
`的时候,会直接报出警告“UITableViewCell” to nil always returns false
5.我是用一个布尔值判断是否更新UI和一个int类型记录点击次数,从而设定布尔值。
6.项目链接:
【补充】
1.获取系统字体的方法
override func viewDidLoad() { super.viewDidLoad() // 获取当前字体信息 let currentFont = UIFont.systemFont(ofSize: UIFont.systemFontSize) print(currentFont) // 获取系统所有字体 let familyNameArray = NSMutableArray() let familyNameAll = UIFont.familyNames for family in familyNameAll{ let fonts = UIFont.fontNames(forFamilyName: family) for font in fonts { familyNameArray.add(font) } } print(familyNameArray) }
打印结果:
<UICTFont: 0x7fb9b650bed0> font-family: ".SFUIText"; font-weight: normal; font-style: normal; font-size: 14.00pt( "Copperplate-Light", Copperplate, "Copperplate-Bold", "KohinoorTelugu-Regular", "KohinoorTelugu-Medium", "KohinoorTelugu-Light", Thonburi, "Thonburi-Bold", "Thonburi-Light", "CourierNewPS-BoldMT", "CourierNewPS-ItalicMT", CourierNewPSMT, "CourierNewPS-BoldItalicMT", "GillSans-Italic", "GillSans-Bold", "GillSans-BoldItalic", "GillSans-LightItalic", GillSans, "GillSans-Light", "GillSans-SemiBold", "GillSans-SemiBoldItalic", "GillSans-UltraBold", "AppleSDGothicNeo-Bold", "AppleSDGothicNeo-UltraLight", "AppleSDGothicNeo-Thin", "AppleSDGothicNeo-Regular", "AppleSDGothicNeo-Light", "AppleSDGothicNeo-Medium", "AppleSDGothicNeo-SemiBold", "MarkerFelt-Thin", "MarkerFelt-Wide", "AvenirNextCondensed-BoldItalic", "AvenirNextCondensed-Heavy", "AvenirNextCondensed-Medium", "AvenirNextCondensed-Regular", "AvenirNextCondensed-HeavyItalic", "AvenirNextCondensed-MediumItalic", "AvenirNextCondensed-Italic", "AvenirNextCondensed-UltraLightItalic", "AvenirNextCondensed-UltraLight", "AvenirNextCondensed-DemiBold", "AvenirNextCondensed-Bold", "AvenirNextCondensed-DemiBoldItalic", TamilSangamMN, "TamilSangamMN-Bold", "HelveticaNeue-Italic", "HelveticaNeue-Bold", "HelveticaNeue-UltraLight", "HelveticaNeue-CondensedBlack", "HelveticaNeue-BoldItalic", "HelveticaNeue-CondensedBold", "HelveticaNeue-Medium", "HelveticaNeue-Light", "HelveticaNeue-Thin", "HelveticaNeue-ThinItalic", "HelveticaNeue-LightItalic", "HelveticaNeue-UltraLightItalic", "HelveticaNeue-MediumItalic", HelveticaNeue, "GurmukhiMN-Bold", GurmukhiMN, TimesNewRomanPSMT, "TimesNewRomanPS-BoldItalicMT", "TimesNewRomanPS-ItalicMT", "TimesNewRomanPS-BoldMT", "Georgia-BoldItalic", Georgia, "Georgia-Italic", "Georgia-Bold", AppleColorEmoji, ArialRoundedMTBold, "Kailasa-Bold", Kailasa, "KohinoorDevanagari-Light", "KohinoorDevanagari-Regular", "KohinoorDevanagari-Semibold", "KohinoorBangla-Semibold", "KohinoorBangla-Regular", "KohinoorBangla-Light", "ChalkboardSE-Bold", "ChalkboardSE-Light", "ChalkboardSE-Regular", "SinhalaSangamMN-Bold", SinhalaSangamMN, "PingFangTC-Medium", "PingFangTC-Regular", "PingFangTC-Light", "PingFangTC-Ultralight", "PingFangTC-Semibold", "PingFangTC-Thin", "GujaratiSangamMN-Bold", GujaratiSangamMN, DamascusLight, DamascusBold, DamascusSemiBold, DamascusMedium, Damascus, "Noteworthy-Light", "Noteworthy-Bold", GeezaPro, "GeezaPro-Bold", "Avenir-Medium", "Avenir-HeavyOblique", "Avenir-Book", "Avenir-Light", "Avenir-Roman", "Avenir-BookOblique", "Avenir-MediumOblique", "Avenir-Black", "Avenir-BlackOblique", "Avenir-Heavy", "Avenir-LightOblique", "Avenir-Oblique", AcademyEngravedLetPlain, DiwanMishafi, "Futura-CondensedMedium", "Futura-CondensedExtraBold", "Futura-Medium", "Futura-MediumItalic", "Futura-Bold", Farah, KannadaSangamMN, "KannadaSangamMN-Bold", "ArialHebrew-Bold", "ArialHebrew-Light", ArialHebrew, ArialMT, "Arial-BoldItalicMT", "Arial-BoldMT", "Arial-ItalicMT", Gaspar, PartyLetPlain, Chalkduster, "HoeflerText-Italic", "HoeflerText-Regular", "HoeflerText-Black", "HoeflerText-BlackItalic", "Optima-Regular", "Optima-ExtraBlack", "Optima-BoldItalic", "Optima-Italic", "Optima-Bold", "Palatino-Bold", "Palatino-Roman", "Palatino-BoldItalic", "Palatino-Italic", LaoSangamMN, "MalayalamSangamMN-Bold", MalayalamSangamMN, "AlNile-Bold", AlNile, "BradleyHandITCTT-Bold", "PingFangHK-Ultralight", "PingFangHK-Semibold", "PingFangHK-Thin", "PingFangHK-Light", "PingFangHK-Regular", "PingFangHK-Medium", "Trebuchet-BoldItalic", TrebuchetMS, "TrebuchetMS-Bold", "TrebuchetMS-Italic", "Helvetica-Bold", Helvetica, "Helvetica-LightOblique", "Helvetica-Oblique", "Helvetica-BoldOblique", "Helvetica-Light", "Courier-BoldOblique", Courier, "Courier-Bold", "Courier-Oblique", "Cochin-Bold", Cochin, "Cochin-Italic", "Cochin-BoldItalic", "HiraMinProN-W6", "HiraMinProN-W3", DevanagariSangamMN, "DevanagariSangamMN-Bold", OriyaSangamMN, "OriyaSangamMN-Bold", "SnellRoundhand-Bold", SnellRoundhand, "SnellRoundhand-Black", ZapfDingbatsITC, "BodoniSvtyTwoITCTT-Bold", "BodoniSvtyTwoITCTT-Book", "BodoniSvtyTwoITCTT-BookIta", "Verdana-Italic", "Verdana-BoldItalic", Verdana, "Verdana-Bold", "AmericanTypewriter-CondensedLight", AmericanTypewriter, "AmericanTypewriter-CondensedBold", "AmericanTypewriter-Light", "AmericanTypewriter-Semibold", "AmericanTypewriter-Bold", "AmericanTypewriter-Condensed", "AvenirNext-UltraLight", "AvenirNext-UltraLightItalic", "AvenirNext-Bold", "AvenirNext-BoldItalic", "AvenirNext-DemiBold", "AvenirNext-DemiBoldItalic", "AvenirNext-Medium", "AvenirNext-HeavyItalic", "AvenirNext-Heavy", "AvenirNext-Italic", "AvenirNext-Regular", "AvenirNext-MediumItalic", "Baskerville-Italic", "Baskerville-SemiBold", "Baskerville-BoldItalic", "Baskerville-SemiBoldItalic", "Baskerville-Bold", Baskerville, KhmerSangamMN, "Didot-Italic", "Didot-Bold", Didot, SavoyeLetPlain, BodoniOrnamentsITCTT, Symbol, "Menlo-Italic", "Menlo-Bold", "Menlo-Regular", "Menlo-BoldItalic", "BodoniSvtyTwoSCITCTT-Book", Papyrus, "Papyrus-Condensed", "HiraginoSans-W3", "HiraginoSans-W6", "PingFangSC-Ultralight", "PingFangSC-Regular", "PingFangSC-Semibold", "PingFangSC-Thin", "PingFangSC-Light", "PingFangSC-Medium", "MyanmarSangamMN-Bold", MyanmarSangamMN, "EuphemiaUCAS-Italic", EuphemiaUCAS, "EuphemiaUCAS-Bold", Zapfino, "BodoniSvtyTwoOSITCTT-Book", "BodoniSvtyTwoOSITCTT-Bold", "BodoniSvtyTwoOSITCTT-BookIt")
2.获取系统字体方法
->将你的字体文件(以.otf或者.ttf为后缀的文件)拖入到项目中
->在info.plist文件中添加“Fonts provided by application”字段,并将你的字体文件名称完整写出来。
->在【Target-BuildPhase-Copy Bundle Resources】中看看是否有你刚刚添加的字体文件名称,有就说明添加好了,没有你自己再手动加一下。接下来你就可以直接根据字体名字在代码中使用了。
3.xib使用字体
选择custom之后选择你想要的字体就可以了
Swift初学者,如果有不合理或者不正确的地方,还请指正。共同进步。
- ProjectBySwift-02-CustomFont
- ProjectBySwift-01-秒表
- ProjectBySwift-03-PlayLocalVideo
- Unity的UGUI中使用CustomFont(BMFont)
- 如何利用CustomFont+PS制作字体
- Unity CustomFont (怎么制作图片文字)
- UGUI中CustomFont字体使用与制作
- 【Unity】UGUI 如何使用CustomFont(自定义字体)
- unity uGui使用图片显示数字(CustomFont)记录备忘
- [Unity UGUI] use image display Numbers (CustomFont) to record notes
- 02
- *02
- #!(02)
- 02
- 02
- 02
- 02
- 02
- 简单页面(C标签)+java后台+数据库,对前篇文章的改进
- SSH项目整合-简单在线订单系统
- 小白算法练习 简单背包专题003 完全背包 hdu lanqiao 包子凑数 dp
- 归档命令(4)——gzip
- 算法学习笔记17-经典排序算法
- ProjectBySwift-02-CustomFont
- struct和typedef struct分析
- js 定时器如何立即关闭
- 【挖坑】在阿里云上部署Web项目(学生9块9一个月!)
- jQuery源码学习笔记(05)
- 数据结构排序基础算法总结(C++版)
- 使用python如何实现森另算法?
- 真正理解线程上下文类加载器(多案例分析)
- kettle7.1的资源库配置变为灰色,且没有了Connect按钮