美文网首页
iOS常用控件及方法的封装

iOS常用控件及方法的封装

作者: lazyycz | 来源:发表于2018-01-16 21:48 被阅读0次

背景

  • 代码方式布局通常会写很多代码,使整个布局结构看起来比较凌乱且写起很繁琐,可以通过Category方式对系统常用控件的接口进行封装,使创建或设置这些控件变得很简单,很容易,代码很整齐,达到意想不到的结果!

对Button和Label的封装

  • 详见代码如下
+ (UIButton *)buttonWithTitleFont:(UIFont *)font titleColor:(UIColor *)color;

+ (UIButton *)buttonWithTitleFont:(UIFont *)font titleColor:(UIColor *)color title:(NSString *)title;

+ (UIButton *)buttonWithTitleFont:(UIFont *)font titleColor:(UIColor *)color backgroundColor:(UIColor *)backColor;

+ (UIButton *)buttonWithTitleFont:(UIFont *)font titleColor:(UIColor *)color title:(NSString *)title backgroundColor:(UIColor *)backColor;

- (void)setTitleFont:(UIFont *)font titleColor:(UIColor *)color;

- (void)setTitleFont:(UIFont *)font titleColor:(UIColor *)color title:(NSString *)title;

- (void)setTitleFont:(UIFont *)font titleColor:(UIColor *)color backgroundColor:(UIColor *)backColor;

- (void)setTitleFont:(UIFont *)font titleColor:(UIColor *)color title:(NSString *)title backgroundColor:(UIColor *)backColor;

- (void)setTitleFont:(UIFont *)font titleColor:(UIColor *)color normalTitle:(NSString *)normalTitle selectedTitle:(NSString *)selectedTitle;

+ (UILabel *)labelWithTextFont:(UIFont *)font textColor:(UIColor *)color;

+ (UILabel *)labelWithTextFont:(UIFont *)font textColor:(UIColor *)color text:(NSString *)text;

+ (UILabel *)labelWithTextFont:(UIFont *)font textColor:(UIColor *)color backgroundColor:(UIColor *)backColor;

+ (UILabel *)labelWithTextFont:(UIFont *)font textColor:(UIColor *)color text:(NSString *)text backgroundColor:(UIColor *)backColor;

+ (UILabel *)labelWithTextFont:(UIFont *)font textColor:(UIColor *)color text:(NSString *)text alignment:(NSTextAlignment)alignment;

+ (UILabel *)labelWithTextFont:(UIFont *)font textColor:(UIColor *)color text:(NSString *)text backgroundColor:(UIColor *)backColor alignment:(NSTextAlignment)alignment;

这样创建Button和Label会变得非常简单,一行代码将搞定!

  • 一行代码设置按钮的Image和Title对齐方式,不再受imageEdgeInsets和titleEdgeInsets的困扰
    完美的解决UIButton 的 imageEdgeInsets 和 titleEdgeInsets布局难的问题
- (void)layoutWithStyle:(LYButtonLayoutStyle)style andSpacing:(CGFloat)spacing

- (void)layoutWithStyle:(LYButtonLayoutStyle)style andSpacing:(CGFloat)spacing
{
    CGSize imageSize = self.imageView.frame.size;
    CGSize titleSize = self.titleLabel.frame.size;
    
    switch (style) {
        case LYButtonLayoutStyleImagePositionTop: {
            self.imageEdgeInsets = UIEdgeInsetsMake(-(titleSize.height + spacing) / 2, titleSize.width / 2, (titleSize.height + spacing) / 2, -(titleSize.width / 2));
            self.titleEdgeInsets = UIEdgeInsetsMake((imageSize.height + spacing) / 2, -(imageSize.width / 2), -(imageSize.height + spacing) / 2, imageSize.width / 2);
        }
            break;
            
        case LYButtonLayoutStyleImagePositionBottom: {
            self.imageEdgeInsets = UIEdgeInsetsMake((titleSize.height + spacing) / 2, titleSize.width / 2, -(titleSize.height + spacing) / 2, -(titleSize.width / 2));
            self.titleEdgeInsets = UIEdgeInsetsMake(-(imageSize.height + spacing) / 2, -(imageSize.width / 2), (imageSize.height + spacing) / 2, imageSize.width / 2);
        }
            break;
            
        case LYButtonLayoutStyleImagePositionLeft: {
            self.imageEdgeInsets = UIEdgeInsetsMake(0.0, -(spacing / 2), 0.0, spacing / 2);
            self.titleEdgeInsets = UIEdgeInsetsMake(0.0, spacing / 2, 0.0, -(spacing / 2));
        }
            break;
            
        case LYButtonLayoutStyleImagePositionRight: {
            self.imageEdgeInsets = UIEdgeInsetsMake(0.0, titleSize.width + spacing / 2, 0.0, -(titleSize.width + spacing / 2));
            self.titleEdgeInsets = UIEdgeInsetsMake(0.0, -(imageSize.width + spacing / 2), 0.0, (imageSize.width + spacing / 2));
        }
            break;
        default:
            break;
    }
}

这里有Demo,可以通过 pod 'UIUtility' 导入工程,效果图如下:

21516110402_.pic.jpg
更多封装详见代码

相关文章

  • iOS常用控件及方法的封装

    背景 代码方式布局通常会写很多代码,使整个布局结构看起来比较凌乱且写起很繁琐,可以通过Category方式对系统常...

  • 封装的常用方法

    1.常用控件方法的封装: #import #import @interfaceMyUtil :NSObject /...

  • IOS开发(三)高级控件

    IOS基础控件思维导图 三、高级控件 1、UITabBarController (1)常用属性 (2)常用方法 (...

  • IOS开发(二)中级控件

    IOS基础控件思维导图 二、中级控件 1、UIStepper (1)常用属性 (2)常用方法 2、UISlider...

  • iOS 常用小控件及方法

    目录: 一, 常用小控件 自定义顶部导航CarTeamDetailsTitleView: 左侧返回按钮, 右侧更多...

  • React-Native WebView控件使用

    和Android及IOS一样,在React Native中也有加载网页数据的控件WebView,常用的方法有: s...

  • iOS开发之控件封装(又名拧螺丝):排序按钮

    iOS开发之控件封装(又名拧螺丝):排序按钮 iOS开发之控件封装(又名拧螺丝):排序按钮

  • stevia别具一格的约束库

    源码结构 1 约束条件的封装2 样式的封装3 控件常用方法的封装 整体思路 1 每个方法都都将加入的新的view添...

  • UITableView优化方法

    TableView是iOS开发中比较常用的控件,熟悉优化TableView的方法,对今后的开发iOS很有帮助。 下...

  • iOS UILabel

    前言 本专题整理了 UIkit 中基本的控件,及控件的一些常用属性。方便大家研究。1. iOS UIView (一...

网友评论

      本文标题:iOS常用控件及方法的封装

      本文链接:https://www.haomeiwen.com/subject/utveoxtx.html