2016-02-19 11 views
9

Meine Frage ist eine einfache. In android können wir das XML-Stylesheet vom Layout trennen, so dass es überall wiederverwendet und problemlos für die Änderung des UI-Designs bearbeitet werden kann.effektive Benutzeroberfläche für iOS App

Ist es auch in iOS xcode möglich? wenn kann wie (lieber wenn nicht vom Controller)? Brauchen Bibliotheken? Was sind gute Bibliotheken dafür?

Vielen Dank für Ihre Antwort.

+0

Subklassifizierung von UI-Komponenten? – zcui93

+0

können Sie für diesen Zweck Kategorieklasse verwenden. – KDeogharkar

Antwort

1

können Sie UICategory Klasse für UIView für diesen Zweck verwenden. Erstellen Sie verschiedene Methoden für Set borders, border colors, Pass bazier-paths, cornerradius und so viele. Das sind nur einige von ihnen. Kategorie ist von UIView, also können Sie auf buttons, lables, textview, textedits usw. verwenden;

UIView + category.h

@interface UIView (category) 
-(void)makeToRoundEdgeWithBorder:(CGFloat)borderwidth bordecolor:(UIColor *)color; 

@end 

UIView + category.m

@implementation UIView (category) 

-(void)makeToRoundEdgeWithBorder:(CGFloat)borderwidth bordecolor:(UIColor *)color 
{ 
    NSLog(@"height %f width %f",CGRectGetHeight(self.frame),CGRectGetWidth(self.frame)); 
    self.layer.cornerRadius=CGRectGetHeight(self.frame)/2; 
    self.layer.masksToBounds=YES; 
    self.layer.borderColor=[color CGColor]; 
    self.layer.borderWidth=borderwidth; 
} 

@end 

Verwenden Sie es

[yourlable makeToRoundEdgeWithBorder:0.0f bordercolor:[UIColor clearColor] cornerRadius:8.0f]; 

[yourbutton makeToRoundEdgeWithBorder:0.0f bordercolor:[UIColor clearColor] cornerRadius:8.0f]; 

[yourTextview makeToRoundEdgeWithBorder:0.0f bordercolor:[UIColor clearColor] cornerRadius:8.0f]; 

[yourTextfield makeToRoundEdgeWithBorder:0.0f bordercolor:[UIColor clearColor] cornerRadius:8.0f]; 
+3

Dies ist nicht Swift - Wie es akzeptiert wird Antwort, nicht sicher, was OP fragt, vielleicht Swift Extension Beispiele auch. – Wez

+0

ja sicher @Wezly. – KDeogharkar

+4

Um Verwirrung zu vermeiden, ist eine Kategorie, insbesondere für Anfänger, keine Klasse. In der Tat gibt es keine "UICategory". Kategorien sind lediglich eine Möglichkeit, vorhandenen Klassen neue Funktionen hinzuzufügen. – pajevic

1

Sie können Classy verwenden, um Stile für Ihre Benutzeroberfläche in einer CSS-ähnlichen Weise zu definieren. Es ist verwendet und gewartet von den Menschen bei Wire

+1

Danke! Aus Neugier darauf geklickt. Erste Zeile in der Readme-Datei sagt 'HINWEIS: Classy ist nicht mehr aktiv gepflegt siehe: Suche nach Mitwirkenden 'Daher vielleicht nicht wirklich eine gute Wahl. – Alex

+0

Wie gesagt, es wird aktiv gepflegt. Ich weiß für eine Tatsache :) https://github.com/ClassyKit/Classy/issues/108 – tmpz

+0

Wie Sie sehen können, war die letzte Pull-Anfrage fusionierte 22. Dezember 2015 von [Mikeger] (https://github.com/ mikeger), die bei der von mir erwähnten Firma arbeitet. Weder die Firma noch der Rahmen werden bald verschwinden. Ich habe kein Interesse daran, Sie zu benutzen, aber ich kann für seine Qualität bürgen. – tmpz

2

Sie sollten auch schauen in UIAppearance. Es ist ein Design-Proxy, der für die meisten UI-Elemente verfügbar ist, in denen Sie das Styling nur einmal festlegen.

11

Sie könnten Ihre eigenen Stile mit enums erstellen. Durch die Platzierung Aufzählungen in den Styles Enum Sie eine schöne Gruppierung erhalten:

enum Styles { 
    enum Labels { 
     case Standard 
     case LargeText 

     func style(label: UILabel) { 
      switch self { 
      case .Standard: 
       label.font = UIFont.systemFontOfSize(12) 
      case .LargeText: 
       label.font = UIFont.systemFontOfSize(18) 
      } 
     } 
    } 

    enum Buttons { 
     case RedButton 

     func style(button: UIButton) { 
      switch self { 
      case .RedButton: 
       button.setTitleColor(UIColor.redColor(), forState: UIControlState.Normal) 
      } 
     } 
    } 
} 

Dann können Sie es wie folgt verwenden:

Styles.Labels.Standard.style(yourLabel) 

Sie können auch dann Erweiterungen machen für die Stile, die Sie eingerichtet haben:

extension UILabel { 
    func style(style: Styles.Labels) { 
     style.style(self) 
    } 
} 

extension UIButton { 
    func style(style: Styles.Buttons) { 
     style.style(self) 
    } 
} 

Und dann die Erweiterungen wie folgt verwenden:

yourLabel.style(.Standard) 
yourButton.style(.RedButton)