为iOS应用程序提供有效的UI样式
我的问题是一个简单的问题。 在android中,我们可以将xml样式表从布局中分离出来,这样就可以在任何地方重复使用,并且可以轻松地编辑UIdevise。
在iOS xcode中也可以吗? 如果能如何(更喜欢,如果不是从控制器)? 需要图书馆? 什么是好的图书馆呢?
谢谢您的回答。
你可以为此目的使用UICiew类。 创build不同的方法设置borders
, border colors
,通过bazier-paths
, corner
radius
等等。 这只是其中的几个。 类是UIView的,所以你可以使用buttons
, lables
, textview
, textedits
等;
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使用和维护