Ios 将字体设置为响应以下命令的任何对象:#选择器(setter:object.font)

Ios 将字体设置为响应以下命令的任何对象:#选择器(setter:object.font),ios,swift,selector,uifont,Ios,Swift,Selector,Uifont,我试图重写这个Objective-C方法,它工作得非常好 + (void)setFontName:(NSString*)fontName onObject:(id)object { if ([object respondsToSelector:@selector(setFont:)]) { UIFont* font = [UIFont fontWithName:fontName size:((UIFont *)[object font]).pointSize];

我试图重写这个Objective-C方法,它工作得非常好

+ (void)setFontName:(NSString*)fontName onObject:(id)object {
    if ([object respondsToSelector:@selector(setFont:)]) {
        UIFont* font = [UIFont fontWithName:fontName size:((UIFont *)[object font]).pointSize];
        [object setFont:font];
    }
}
迅速:

public static func setFontRewriting(fontName: String, object: AnyObject) {
    if object.responds(to:#selector(setter: object.font)) {
        let currentFont: UIFont = object.font
        let fontToSet = UIFont(name: fontName, size: currentFont.pointSize)
        object.font = fontToSet //doesn't work, getting various syntax errors
    }
}

即使对象响应此选择器,我也无法为其设置字体。
object.setFont
也不起作用。有什么建议吗?

您可以执行以下操作:


object.setValue(fontToSet,forKey:“font”)

对象的类型为AnyObject。在打电话给setter之前,你必须先施放它。请阅读以下内容:也许可以帮助你更多地了解swift和AnyObject