2016-02-19 2 views
9

私の質問は簡単なものです。アンドロイドでは、レイアウトからXMLスタイルシートを分けることができるので、どこでも再利用でき、UIデザイン変更のために簡単に編集できます。iOSアプリの効果的なUIスタイリング

iOS xcodeでも可能ですか?どうすればいいですか(コントローラーではない場合は好きですか?)ライブラリが必要ですか?そのための良い図書館は何ですか?

ありがとうございました。

+0

UIコンポーネントのサブクラス化? – zcui93

+0

あなたはその目的のためにカテゴリクラスを使うことができます。 – KDeogharkar

答えて

1

あなたはUICategoryその目的のためのUIViewのクラスを使用することができます。 bordersborder colorsbazier-pathscornerradiusなど多くの異なるメソッドを作成します。これはほんのわずかです。カテゴリはUIViewのものなので、buttonslablestextviewtexteditsなどで使用できます。

の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 

は、それが

[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

これはスウィフトではありません。答えが受け入れられているので、OPが何を求めているのかわからない場合は、おそらくスウィフト拡張の例を提供してください。 – Wez

+0

はい@Wezly。 – KDeogharkar

+4

特に初心者のプログラマにとって混乱を避けるため、カテゴリはクラスではありません。実際、UICategoryというものはありません。カテゴリは単なる既存のクラスに新しい機能を追加する方法です。 – pajevic

1

Classyを使用すると、よりCSSのような方法でUIのスタイルを定義できます。これは、人々によって使用され維持されてWire

+1

ありがとう!好奇心からそれをクリックしました。 Readmeファイルの最初の行に '注意:Classyはもはや積極的に管理されていません。参照:寄稿者を探しています'と書かれています。 – Alex

+0

私が言ったように、それは積極的に維持されています。私は事実を知っています:) https://github.com/ClassyKit/Classy/issues/108 – tmpz

+0

最後に引き出されたリクエストは2015年12月22日に[mikeger](https://github.com/)によってマージされました。マイケル)私が言及した会社で働く。フレームワークではない企業はすぐに消えることはありません。私はそれを使用してあなたに興味がないが、私はそれが品質であることを保証することができます。 – tmpz

2

あなたはまた、使用しているはずですUIAppearanceに入力します。これは、スタイリングを一度しか設定しないほとんどのUI要素で使用できるデザインプロキシです。

11

enumを使用して独自のスタイルを作成できます。

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

その後、あなたはこのようにそれを使用することができます:

Styles.Labels.Standard.style(yourLabel) 

あなたはまた、あなたが設定しているスタイルのための拡張を行うことができます。

スタイル内の列挙型を置くことによって、あなたが素敵なグループを取得するENUM
extension UILabel { 
    func style(style: Styles.Labels) { 
     style.style(self) 
    } 
} 

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

そして、このように拡張機能を使用:

yourLabel.style(.Standard) 
yourButton.style(.RedButton) 
関連する問題