来自:http://www.jianshu.com/p/bcf86b170d9c

前言

为什么会写这个?因为在iOS开发中,界面的布局一直没有Android布局有那么多的方法和优势,我个人开发都是纯代码,Masonry这个框架我在开发中也是不用的,一个是代码布局的时候,代码量比较多,另外好像在iOS10 布局有问题,网上也有些解决的方法了。

所以就想能自定义一些UI控件,使布局更加简单

实现思路

可以像Android的wrap_content一样,是UILabel 可以根据内容来展示控件的宽高

目前提供ZFUI framework里只提供了UILabel和UIButton的方法

它们都继承对应父类,然后重写里父类的方法,让控件使用更加简单和方便

实现方法

直接上代码,Demo和framework可以去github上下载

https://github.com/joshuaGeng/ZFUI-Framework

首先把ZFUI.framework 添加到项目里

调用的方法

#import <ZFUI/ZFUI.h>

// 创建一个Label的方法

ZFUILabel *label = [[ZFUILabel alloc] init];

label.numberOfLines = 0;

label.backgroundColor = [UIColor greenColor];

[label setLabelText:@"HelloWorld" andWithFrame:CGRectMake(100, 70, 0, 0)];

//label.isCanCopy = YES;

//label.titleCopy = @"Copy";

//设置不同颜色

[label setAttributeColorWithAllStr:label.text andAllColor:[UIColor redColor] andWithDiffStr:@"World" andDiffColor:[UIColor blackColor]];

[self.view addSubview:label];

// button

ZFUIButton *button = [[ZFUIButton alloc] initWithFrame:CGRectMake(100, 120, 120, 60)];

[button setImage:[UIImage imageNamed:@"img"] forState:UIControlStateNormal];

[button setTitle:@"Button" forState:UIControlStateNormal];

button.backgroundColor = [UIColor orangeColor];

button.btnImgRect = CGRectMake(10, 20, 22, 21);

button.btnTitleRect = CGRectMake(50, 20, 120, 30);

[self.view addSubview:button];

目前提供ZFUI framework里只提供了UILabel和UIButton的方法,后续还会继续更新,有需要的可以下载,Demo里的注释也很很详细。

iOS 开发 ZFUI framework控件,使布局更简单的更多相关文章

  1. IOS开发中设置控件内容对齐方式时容易混淆的几个属性

    IOS开发中四个容易混淆的属性: 1. textAligment : 文字的水平方向的对齐方式 1> 取值 NSTextAlignmentLeft      = 0,    // 左对齐 NST ...

  2. ios开发中button控件的属性及常见问题

    最为最基本的控件,我们必须对button的每个常用属性都熟练应用: 1,使用之前,必须对按钮进行定义,为乐规范,在@interface ViewController (){}中进行定义,先定义后使用. ...

  3. iOS开发基础-UITableView控件简单介绍

     UITableView 继承自 UIScrollView ,用于实现表格数据展示,支持垂直滚动.  UITableView 需要一个数据源来显示数据,并向数据源查询一共有多少行数据以及每一行显示什么 ...

  4. IOS开发自定义CheckBox控件

    IOS本身没有系统的CheckBox组件,但是实际开发中会经常用到,所以专门写了一个CheckBox控件,直接上代码 效果图: UICheckBoxButton.h文件如下: #import #imp ...

  5. iOS开发无第三方控件的援助达到的效果侧边栏

    最近的研究iOS程序侧边栏.渐渐的发现iOS该方案还开始采取风侧边栏格该,QQ,今日头条,Path(Path运营商最早的侧边栏app该,效果说成是Path效果),所以就研究了下. 然后发现Git Hu ...

  6. iOS开发中UIDatePicker控件的使用方法简介

    iOS上的选择时间日期的控件是这样的,左边是时间和日期混合,右边是单纯的日期模式. 您可以选择自己需要的模式,Time, Date,Date and Time  , Count Down Timer四 ...

  7. IOS开发--自定义segment控件,方便自定义样式

    系统的segment控件太封闭,想换个颜色加个背景太难了,忍不住自己写一个,以备不时之需 这个控件给出了很多自定义属性的设置,用起来还是比较方便的,需要注意的 itemWidth如果不设置,则会按照控 ...

  8. IOS开发之按钮控件Button详解

    reference:http://mxcvns.lofter.com/post/1d23b1a3_685d59d 首先是继承问题,UIButton继承于UIControl,而UIControl继承于U ...

  9. ios开发之--系统控件显示中文

    虽然一直知道X-code肯定提供有语言本地化的设置地方,但是一直也做个记录,有些时候的汉化,还是需要使用代码去控制,键盘的右下角.navagiton的return使用代码修改,调用系统相机时,也是出现 ...

随机推荐

  1. OneHotEncoder独热编码和 LabelEncoder标签编码

    学习sklearn和kagggle时遇到的问题,什么是独热编码?为什么要用独热编码?什么情况下可以用独热编码?以及和其他几种编码方式的区别. 首先了解机器学习中的特征类别:连续型特征和离散型特征 拿到 ...

  2. Bloom Filter(布隆过滤器)如何解决缓存穿透

    本文摘抄自我的微信公众号"程序员柯南",欢迎关注!原文阅读 缓存穿透是什么? 关于缓存穿透,简单来说就是系统处理了大量不存在的数据查询.正常的使用缓存流程大致是,数据查询先进行缓存 ...

  3. Git-删除文件后找回-比较文件差异

    #前提:删除前,文件存在是的状态提交到了本地库#操作: git reset --hard 指针位置 删除操作已近提交到本地库:指针指向历史记录 linxianli@VM-QS- MINGW64 /c/ ...

  4. Linux基础优化与安全归纳总结

    一名运维工程师在运维岗位上时间久了,就会发现Linux优化的重要性,同时会给运维工作带来很多的便利性.本人逐渐认识到了这一点,所以特意在工作闲暇之余,通过阅读Linux相关书籍及向同事.同行高手咨询, ...

  5. VSCode python 遇到的问题:vscode can't open file '<unprintable file name>': [Errno 2] No such file or directory

    代码很简单,就两行: import pandas as pd import netCDF4 as nc dataset = nc.Dataset('20150101.nc') 环境:在VSCode中左 ...

  6. flutter-开发总结

    ### 上拉加载下拉刷新 ``` import 'dart:async'; import 'package:flutter_easyrefresh/easy_refresh.dart'; import ...

  7. DAY24、面向对象

    一.复习继承1.父类:在类后()中写父类们2.属性查找顺序:自己->()左侧的父类->依次往右类推3.抽离:先定义子类,由子类的共性抽离出父类 派生:父类已经创建,通过父类再去派生子类4. ...

  8. package---包

    一,包 包(package) 用于管理程序中的类,主要用于解决类的同名问题.包可以看成目录. 包的作用: [1] 防止命名冲突. [2] 允许类组成一个单元(模块),便于管理和维护 [3] 更好的保护 ...

  9. Centos 7 搭建 你懂的

    2018-11-21    19:10:18 本文初衷只是为自己下次搭建做个记录,文中代码也是借鉴其他博客的 以下为博客链接 https://www.cnblogs.com/shipengfei/p/ ...

  10. 商誉专题RN及H5项目总结

    React(基础框架): React 是基础框架,是一套基础设计实现理念,开发者不能直接使用它来开发移动应用或者网页. React.js(web网页开发):在React框架之上,发展出了React.j ...