2016-02-03 30 views
8

Android, WPF e quasi tutte le piattaforme con cui ho lavorato, ha modo di riutilizzare e "centralizzare" risorse ui come colori e stili in un unico file.Come riutilizzare colori e stili in iOS/xcode?

in Android è posible a fare in questo modo:

nel file di colors.xml:

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

in qualsiasi vista:

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

C'è qualcosa di simile in iOS?

Non sto tentando di replicare Android in iOS, ma sto lottando con la comprensione di ciò che è (se esiste) il pattern di riutilizzo che dovrebbe essere seguito.

L'unica cosa che ho trovato è definire Tema nel codice, e riutilizzarlo nel codice dietro, è quello giusto?

+0

utilizzare il file PCH per definire un uicolore con un valore RGB e continuare a usare quella costante. –

+0

Swift o Objective C? – Devster101

+0

Devster101 - Swift – daneejela

risposta

10

È possibile eseguire questa operazione utilizzando qualsiasi classe singleton o l'estensione UIColor. Di seguito è riportato un esempio di estensione UIColor.

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) 
    } 
} 

In seguito è possibile accedere al colore come

textField.textColor = UIColor.someColor2() 

Edit: Si può fare lo stesso per gli stili troppo, utilizzando 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 
    } 
} 

Quando richiesto lo stile, si vuole chiamare come

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

Non sono sicuro che sia la risposta (completa) alla domanda, ma lo trovo utile, quindi lo inviterò per ora. Grazie – daneejela

1

Aggiungendo alle estensioni di risposta raki di classi come UIColor o UIFont è quello che ho visto di più e anche se devi fare un po 'più di digitazione è l'equivalente in iOS.

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

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

}

Un'altra cosa che potrebbero essere rilevanti provenienti da Android è l'equivalente di un file di stringhe nella programmazione iOS dal momento che sembra di essere interessato a riutilizzare questi stili. Per le stringhe:

You can add a strings file to your project

e quindi compilare le stringhe che si intende utilizzare nella vostra applicazione

"ACTION_CELL_MENU" =    "Menu"; 

Poi nel codice altrove

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