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初学者,如果有不合理或者不正确的地方,还请指正。共同进步。

原创粉丝点击