ProjectBySwift-02-CustomFont

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值