为iOS应用程序提供有效的UI样式

我的问题是一个简单的问题。 在android中,我们可以将xml样式表从布局中分离出来,这样就可以在任何地方重复使用,并且可以轻松地编辑UIdevise。

在iOS xcode中也可以吗? 如果能如何(更喜欢,如果不是从控制器)? 需要图书馆? 什么是好的图书馆呢?

谢谢您的回答。

你可以为此目的使用UICiew类。 创build不同的方法设置bordersborder colors ,通过bazier-pathscorner radius等等。 这只是其中的几个。 类是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]; 

你可以使用枚举来创build你自己的样式。 通过在枚举样式中放置枚举,可以得到一个很好的分组:

 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) 

您也可以对您设置的样式进行扩展:

 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) 

你也应该看看UIAppearance 。 这是一个可用于大多数UI元素的devise代理,您只需设置样式一次。

您可以使用Classy以更像CSS的方式为您的UI定义样式。 它被Wire使用和维护