最近一直在使用xib开发,在xib上面使用inset调整button的image或者title的位置实在是有点呵呵

索性自己用xib定义button,添加imageView和Label的属性,在最上层在覆盖一层button。

(当然我这样自定义button会增加工作量,因为button本身提供了修改图片以及标题的方法inset,只是提供一个用xib自定义控件的例子)

中间遇到不少问题,总结一下跟大家分享。

写一下我的步骤,遇到的问题以及解决的办法。

创建项目过程略过,直接上图

创建继承自UIView的aView,创建aView.xib,然后建立他们之间的相互依赖关系。见下图

在Class处选择要相互依赖的文件名。

开始创建自定义button

设置aView.xib的size为freeform

在这里我设置的size为200*200

然后添加imageView和Label,autolayout添加约束,完成这一户之后的样子

然后在最上面覆盖一层button,添加约束。当然这里button的大小要等于view的大小,覆盖在最上层。

然后再aView.h里面添加view,imageView和Label的属性,在.m文件里面添加button属性。button也可以写在.h文件,不过我们这里不需要把这个属性暴露出来,因为我们在实例化aView的对象时候不会对button进行操作。一定要添加一个继承自UIView的属性。

如下图操作

然后我们在.m文件添加awakeFormNib的方法

- (void)awakeFromNib
{NSLog(@"awake from nib");[[NSBundle mainBundle] loadNibNamed:@"aView" owner:self options:nil];[self addSubview:_contentView];
}

添加我们自定义的方法

- (void)addTarget:(id)target action:(SEL)action
{[_button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
}

当然这个方法要在.h文件声明一下。

到目前为止我们xib自定义的button已经完成,现在来看看效果

在ViewController.xib文件拖进来一个view,注意修改custom class为aView 记得按回车

然后设置view大小为270*270

然后再viewcontroller.m文件里添加aView的属性

然后再viewdidload方法里面添加aview触发的方法和image label属性

- (void)viewDidLoad {[super viewDidLoad];[_aview addTarget:self action:@selector(aaa)];_aview.imageView.image = [UIImage imageNamed:@"jobs"];_aview.label.text = @"自定义button";
}- (void)aaa
{NSLog(@"aaa");
}

然后运行。然后发现运行的结果并不是预想的那样

我们自定义button的xib里面我们设置的view的大小为200*200,然后我们在view controller.xib里面设置的时270*270,然后就出现了上面的情况。

然后只需要在aView.m文件的- (void)awakeFromNib方法里面添加这一句代码

_contentView.frame = CGRectMake(0, 0, _contentView.superview.frame.size.width,_contentView.superview.frame.size.height);

但是这句代码仔细想一下可能会有点疑惑,我们来看看下面这张图

我们看到,灰色的一层继承自UIView,然后蓝色一层继承的是aView,aView是View的父视图,这样就很容易理解了。

欢迎批评指正。

使用xib自定义button相关推荐

  1. 解决xib自定义tableFooterView一个神奇的bug

    最近看视频学习,做一个demo的时候碰到一个神奇的bug,后来经过各种搜索.调试和修改代码虽然把这个bug解决了,但不知道为什么.这里打算把这个过程分享出来,给大家做参考顺便也求大神来指导下. 事情是 ...

  2. 设置视图IOS开发(97)之自定义视图之使用XIB自定义一个UIView

    本文纯属个人见解,是对前面学习的总结,如有描述不正确的地方还请高手指正~ 1 前言 Xcode中集成的BI中的控件非常丰富,但有时候不免不能满足我们的需求,今天我们来学习一下如何使用XIB自定义一个U ...

  3. 自定义Button防止重复提交

    由于网速问题,用户总是迫不及待的多次点击提交按钮,从而造成多次提交.以下通过自定义Button控件,来解决此问题. 原理:点击按钮后,通过设置其disabled属性为true来达到目的. 自定义But ...

  4. IOS开发之自定义Button(集成三种回调模式)

    前面在做东西的时候都用到了storyboard,在今天的代码中就纯手写代码自己用封装个Button.这个Button继承于UIView类,在封装的时候用上啦OC中的三种回调模式:目标动作回调,委托回调 ...

  5. Android 自定义Button按钮显示样式(正常、按下、获取焦点)

    2019独角兽企业重金招聘Python工程师标准>>> 现在的用户对APP的外观看得很重要,如果APP内所有元件都用Android默认样式写,估计下面评论里就有一堆在骂UI丑的.今天 ...

  6. 自定义背景android,Android自定义Button并设置不同背景图片的方法

    本文实例讲述了Android自定义Button并设置不同背景图片的方法.分享给大家供大家参考,具体如下: 1.自定义MyButton类 public class MyButton extends Bu ...

  7. iOS开发UI篇—使用xib自定义UItableviewcell实现一个简单的团购应用界面布局

    iOS开发UI篇-使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 iOS开发UI篇-使用xib自定义UItableviewcell实现一个简单的团购应用界面布局 一.项目 ...

  8. 【swift学习笔记】三.使用xib自定义UITableViewCell

    使用xib自定义tableviewCell看一下效果图 1.自定义列 新建一个xib文件 carTblCell,拖放一个UITableViewCell,再拖放一个图片和一个文本框到tableviewc ...

  9. 纯CSS自定义button按钮的点击特效

    纯css自定义button按钮的点击特效,实现背景变化 效果图如下: 代码如下: <!DOCTYPE html> <html> <head><meta cha ...

最新文章

  1. 【MATLAB】符号数学计算(四):符号表达式操作
  2. linux下关于mysqldump备份的.sql导入数据库表数据丢失优化
  3. mysql排序1 10 11_MySQL中的排序
  4. c# 获取当前活动窗口句柄,获取窗口大小及位置
  5. php延迟静态绑定,延迟静态绑定——static
  6. windows平台下在Cygwin中运行Nutch1。2的抓取命令提示JAVA_HOME not set解决方案
  7. bzoj1003 [ZJOI2006]物流运输
  8. navicat激活失败
  9. matlab已知热敏电阻数据,Matlab在热敏电阻特性测量实验中的应用
  10. WE出海增长图书馆 | 世界杯豪门面纱下,不容忽视的【增长】沃土
  11. 怎么读取cf卡id_simotion读写CF卡,保存/读取变量
  12. 和el-dialog同级的列表被push数据后for循环渲染失效,列表不更新
  13. 实现跨word文档的格式刷,两个word间格式刷
  14. 复化梯形公式和复化Simpson公式的python实现
  15. ubuntu 20.04 | 常用软件 必要配置
  16. 3GPP TS 23501-g51 中英文对照 | 4.2.3 Non-roaming reference architecture
  17. 【5G核心网】5G概念以及名词缩写解释
  18. [设计模式] Pipeline 设计模式
  19. 21.Module 的加载实现
  20. 幽美塔罗牌占卜:2020年你还有机会脱单吗

热门文章

  1. 0x01.渗透思路篇
  2. 【秘鲁收款】秘鲁外贸收款Pago Efectivo支付
  3. python3 迭代器(自定义迭代器)
  4. 聚集索引和非聚集索引详解 (zhuang)
  5. 0 前言 关于数学基础以及如何入门算法学习
  6. 顺丰职级分成4级_【顺丰速运内部职级和薪资水平是怎么样的?】-看准网
  7. https攻击工具详解(arp欺骗、中间人攻击)(openssl+sslscan+sslsplit )
  8. DVWA之CSRF攻击
  9. 图书馆管理系统代码html语言,html图书管理系统
  10. UI设计中色彩搭配使用技巧