适用于iOS应用的有效UI样式

时间:2016-02-19 09:32:59

标签: ios swift ui-design

我的问题很简单。在android中,我们可以将xml样式表与布局分开,以便它可以在任何地方重用,并且可以轻松编辑以进行UI设计更改。

在iOS xcode中也可以吗?如果可以如何(如果不是来自控制器)?需要图书馆?什么是好的图书馆?

感谢您的回答。

4 个答案:

答案 0 :(得分:13)

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

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)

答案 1 :(得分:2)

您还应该查看UIAppearance。它是一个设计代理,可用于大多数UI元素,您只需设置一次样式。

答案 2 :(得分:1)

您可以将UICategory类用于UIView用于此目的。为集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];

答案 3 :(得分:0)

您可以使用Classy以类似CSS的方式为UI定义样式。它由Wire

的人使用和维护