Ios Swift使字体切换粗体,斜体,粗体,正常而不更改其他属性

Ios Swift使字体切换粗体,斜体,粗体,正常而不更改其他属性,第1张

概述我很惊讶,简单地为现有字体设置粗体和斜体在 Swift中是如此复杂. 我只想通过在字体类上使用以下方法来简化 *** 作. 我希望将以下方法添加到已设置font-family和font-size的现有字体中.我需要保留这些并仅更改以下内容. setBold : Shud preserve italic setItalic : Shud preserve bold setBoldItalic setNorm 我很惊讶,简单地为现有字体设置粗体和斜体在 Swift中是如此复杂.

我只想通过在字体类上使用以下方法来简化 *** 作.

我希望将以下方法添加到已设置Font-family和Font-size的现有字体中.我需要保留这些并仅更改以下内容.

setBold : Shud preserve italic

setItalic : Shud preserve bold

setBoldItalic

setnormal : remove both bold and italic

removeBold : Shud preserve italic

removeitalic : Shud preserve bold

我试过下面的内容,对我来说,使用FontDescriptorWithSymbolicTraits感觉就像是一场噩梦.

在几行代码中有更简单的方法吗?

extension UIFont{    var isBold: Bool    {        return FontDescriptor().symbolicTraits.contains(.TraitBold)    }    var isItalic: Bool    {        return FontDescriptor().symbolicTraits.contains(.TraitItalic)    }    func setBold() -> UIFont    {        var FontDescriptorVar: UIFontDescriptor        if(isBold){            return self        }        else        {            FontDescriptorVar = FontDescriptor().FontDescriptorWithSymbolicTraits(.TraitBold)        }        return UIFont(descriptor: FontDescriptorVar,size: 0)    }    func setItalic()-> UIFont    {        var FontDescriptorVar: UIFontDescriptor        if(isItalic) {            return self        }        else        {            FontDescriptorVar = FontDescriptor().FontDescriptorWithSymbolicTraits(.TraitItalic)        }        return UIFont(descriptor: FontDescriptorVar,size: 0)    }    func setBoldItalic()-> UIFont    {        let FontDescriptorVar = FontDescriptor().FontDescriptorWithSymbolicTraits(UIFontDescriptorSymbolicTraits(arrayliteral: .TraitBold,.TraitItalic))        return UIFont(descriptor: FontDescriptorVar,size: 0)    }    // Things I need are    // To set back to normal    func setnormal()-> UIFont    {    }    // Remove only bold if it's both bold and Italic    func removeBold()-> UIFont    {    }    // Remove only italic if it's both bold and Italic    func removeitalic()-> UIFont    {    }}

我不想使用这个问我输入的大小和字体:

UIFont(name "namFontFamily",size: 16)UIFont.systemFontOfSize(16,weight: UIFontWeightlight)

我到处搜索,发现没有符合我需求的简单解决方案.

解决方法 您说您想要保留其他特征,因此您可能需要修改代码中的某些方法:
func setBold() -> UIFont{    if isBold {        return self    } else {        var symTraits = FontDescriptor().symbolicTraits        symTraits.insert([.TraitBold])        let FontDescriptorVar = FontDescriptor().FontDescriptorWithSymbolicTraits(symTraits)        return UIFont(descriptor: FontDescriptorVar,size: 0)    }}

setItalic()和setBoldItalic()也是如此.

所以,removeBold()应该是这样的:

func removeBold()-> UIFont{    if !isBold {        return self    } else {        var symTraits = FontDescriptor().symbolicTraits        symTraits.remove([.TraitBold])        let FontDescriptorVar = FontDescriptor().FontDescriptorWithSymbolicTraits(symTraits)        return UIFont(descriptor: FontDescriptorVar,size: 0)    }}

removeItalic()会类似.

但我不确定setnormal().你想要删除所有特征,或者只想删除斜体和粗体?也许你可以随意自己做.

总结

以上是内存溢出为你收集整理的Ios Swift使字体切换粗体,斜体,粗体,正常而不更改其他属性全部内容,希望文章能够帮你解决Ios Swift使字体切换粗体,斜体,粗体,正常而不更改其他属性所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/1108650.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存