2016-02-12 5 views
-1

Этот вопрос следует из Is there a neat way to represent a fraction as an attributed string?.Где разместить разные широко используемые функции?

У меня есть функция, которая обеспечивает шрифт для фракции строки

func fractionFont() -> UIFont { 
    let pointSize = CGFloat(20.0) 
    let systemFontDescriptor = UIFont.systemFontOfSize(pointSize, weight: UIFontWeightLight).fontDescriptor() 
    let fractionFontDescriptor = systemFontDescriptor.fontDescriptorByAddingAttributes(
    [ 
     UIFontDescriptorFeatureSettingsAttribute: [ 
     [ 
      UIFontFeatureTypeIdentifierKey: kFractionsType, 
      UIFontFeatureSelectorIdentifierKey: kDiagonalFractionsSelector, 
     ], ] 
    ]) 
    return UIFont(descriptor: fractionFontDescriptor, size: pointSize) 
} 

и я в ней для свойства этикетки в SomeClass

class SomeClass { 
    @IBOutlet weak var fractionLabel: UILabel! { 
     didSet { 
      fractionLabel.text = "1/2" 
      fractionLabel.font = fractionFont() 
     } 
    } 
} 

сказать я хочу использовать fractionFont метод снова AnotherClass Я предполагаю, что копирование кода - отличная идея. Я также советовал в другой должности использовать так называемые классы Singleton экономно, так что лучший подход для этого?

  • благодаря

ответ

5

Я бы расширить UIFont с fractionFont методом:

extension UIFont { 
    class func fractionFont() -> UIFont { 
     /* Code here */ 
    } 
} 
+2

Лучшая часть о том, что Swift позволит вам ссылаться на метод класса без имени класса, если тип выведено. 'fractionLabel.font = .fractionFont()' –

+0

@mipadi great - в чем заключается практика добавления этих расширений - в выделенный файл .swift? – Alex

+1

@Alex: Если есть другой файл, это имеет смысл (возможно, что-то касающееся шрифтов или других деталей пользовательского интерфейса), я бы добавил его там. В противном случае отдельный файл будет в порядке. – mipadi

0

Создать класс как Misc Вставить вашу функцию как класс FUNC там. Теперь вы можете называть это так fractionLabel.font = Misc.fractionFont()

Смежные вопросы