2016-02-03 3 views
8

Android, WPF und fast jede Plattform, mit der ich gearbeitet habe, hat die Möglichkeit, Ressourcen wie Farben und Stile in einer einzigen Datei wiederzuverwenden und zu "zentralisieren".Wie verwendet man Farben und Stile in iOS/Xcode?

in android es posible ist wie dies zu tun:

in Colors.xml Datei:

<color name="secondary_text_color">#ffcc67</color> 

in einer beliebigen Ansicht:

<TextView text="some text" textColor="@colors/secondary_text_color" /> 

Gibt es etwas ähnliches in iOS?

Ich versuche nicht, Android in iOS zu replizieren, aber ich habe Mühe zu verstehen, was (wenn es welche gibt) ui wiederverwenden Muster, das gefolgt werden sollte.

Die einzige Sache, die ich gefunden habe, ist, Thema in Code zu definieren, und es im Code hinten wiederverwenden, ist das der richtige Weg?

+0

verwenden, um die PCH-Datei verwenden, werden eine definieren uicolor mit einem RGB-Wert und verwenden Sie diese Konstante. –

+0

Swift oder Objective C? – Devster101

+0

Devster101 - Swift – daneejela

Antwort

10

Sie können dies tun, indem Sie eine Singleton-Klasse oder UIColor Erweiterung verwenden. Im Folgenden finden Sie ein Beispiel UIColor Erweiterung.

import Foundation 
import UIKit 

extension UIColor 
{ 
    class func someColor1() -> UIColor 
    { 
     return UIColor(red: 123.0/255.0, green: 162.0/255.0, blue: 157.0/255.0, alpha:1.0) 
    } 

    class func someColor2() -> UIColor 
    { 
     return UIColor(red: 154.0/255.0, green: 143.0/255.0, blue: 169.0/255.0, alpha:1.0) 
    } 
} 

Später können Sie die Farbe zugreifen wie

textField.textColor = UIColor.someColor2() 

Edit: Sie können für Arten das gleiche tun auch NSAttributedString

class StyleHelper : NSObject{ 

    class func getSecondaryTextWithString(textString:String) -> NSAttributedString 
    { 
     let secondaryTextStyleAttributes: [String : AnyObject] = [ 
      NSForegroundColorAttributeName: UIColor.greenColor(), NSUnderlineStyleAttributeName: NSUnderlineStyle.StyleDouble.rawValue,NSFontAttributeName: UIFont.systemFontOfSize(14.0)] 
     let secondaryTextStyleString = NSAttributedString(string: textString, attributes:secondaryTextStyleAttributes) 
     return secondaryTextStyleString 
    } 
} 

Verwendung Wenn Sie den Stil erforderlich, werden Sie Anruf wie

someLabel.attributedText = StyleHelper.getSecondaryTextWithString("SomeText") 
+0

Ich bin mir nicht sicher, ob es die (vollständige) Antwort auf Frage ist, aber ich finde es nützlich, also werde ich es vorläufig aufwerten. Vielen Dank – daneejela

1

Hinzufügen zu Raki Antwort Erweiterungen von Klassen wie UIColor oder UIFont ist, was ich am meisten gesehen habe und obwohl Sie etwas mehr tippen müssen, ist es das Äquivalent in iOS.

extension UIFont { 
class func myFont() -> UIFont { 
    return UIFont(name: "HelveticaNeue", size: 22)! 
} 

class func otherFont() -> UIFont { 
    return UIFont(name: "Arial", size: 22)! 
} 

}

Eine andere Sache, die von Android kommt relevant sein könnte, ist das Äquivalent eines Strings-Datei in iOS-Programmierung, da Sie bei der Wiederverwendung diese Stile zu interessieren scheinen. Für Strings:

You can add a strings file to your project

und füllen dann in Strings, die Sie in Ihrer App

"ACTION_CELL_MENU" =    "Menu"; 

Dann in Ihrem Code an anderer Stelle

label.text = NSLocalizedString("ACTION_CELL_MENU", comment: "") 
Verwandte Themen