Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >iOS-UI控件之UIButton

iOS-UI控件之UIButton

作者头像
用户1941540
发布于 2018-05-11 05:45:39
发布于 2018-05-11 05:45:39
93600
代码可运行
举报
文章被收录于专栏:ShaoYLShaoYL
运行总次数:0
代码可运行

---恢复内容开始---

UIButton

  • 既可以显示图片,又可以显示文字,还能随时调整内部位置
  • 系统自带尺寸

storyboard内部调整UIButton属性

状态

监听按钮点击事件

  • 凡是继承自UIControl的控件,都可以通过addTarget:...方法来监听事件 addTarget:(id) action:(SEL) forControlEvents:(UIControlEvents)
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//UIControlEvents 的取值
typedef NS_OPTIONS(NSUInteger, UIControlEvents) {
    UIControlEventTouchDown           = 1 <<  0,      // on all touch downs
    UIControlEventTouchDownRepeat     = 1 <<  1,      // on multiple touchdowns (tap count > 1)
    UIControlEventTouchDragInside     = 1 <<  2,
    UIControlEventTouchDragOutside    = 1 <<  3,
    UIControlEventTouchDragEnter      = 1 <<  4,
    UIControlEventTouchDragExit       = 1 <<  5,
    UIControlEventTouchUpInside       = 1 <<  6,
    UIControlEventTouchUpOutside      = 1 <<  7,
    UIControlEventTouchCancel         = 1 <<  8,

    UIControlEventValueChanged        = 1 << 12,     // sliders, etc.

    UIControlEventEditingDidBegin     = 1 << 16,     // UITextField
    UIControlEventEditingChanged      = 1 << 17,
    UIControlEventEditingDidEnd       = 1 << 18,
    UIControlEventEditingDidEndOnExit = 1 << 19,     // 'return key' ending editing

    UIControlEventAllTouchEvents      = 0x00000FFF,  // for touch events
    UIControlEventAllEditingEvents    = 0x000F0000,  // for UITextField
    UIControlEventApplicationReserved = 0x0F000000,  // range available for application use
    UIControlEventSystemReserved      = 0xF0000000,  // range reserved for internal framework use
    UIControlEventAllEvents           = 0xFFFFFFFF
};

设置button内部文字和图片的方法

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (void)setTitle:(NSString *)title forState:(UIControlState)state;
- (void)setTitleColor:(UIColor *)color forState:(UIControlState)state UI_APPEARANCE_SELECTOR;
- (void)setImage:(UIImage *)image forState:(UIControlState)state;
- (void)setBackgroundImage:(UIImage *)image forState:(UIControlState)state UI_APPEARANCE_SELECTOR;

自定义UIButton

UIButton内部有两个子控件 UILabelUIImageView

调整控件内部子控件的frame(两种方式)

  • 实现 titleRectForContentRect 和 imageRectForContentRect方法分别返回子控件的 frame
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- (CGRect)titleRectForContentRect:(CGRect)contentRect;
- (CGRect)imageRectForContentRect:(CGRect)contentRect;
  • 在另一方法中设置子控件的frame
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/**
 * 当前控件的frame发生改变的时候就会调用
 * 这个方法专门用来布局子控件,设置子控件的frame
 */
- (void)layoutSubviews;

内边距

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 设置按钮内容的内边距(影响到imageView和titleLabel)
@property(nonatomic)          UIEdgeInsets contentEdgeInsets;
// 设置titleLabel的内边距(影响到titleLabel)
@property(nonatomic)          UIEdgeInsets titleEdgeInsets;
// 设置imageView的内边距(影响到imageView)
@property(nonatomic)          UIEdgeInsets imageEdgeInsets;

图片拉伸

  • UIButton 图片的拉伸,大小改变
  • iOS5之前
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// 只拉伸中间的1x1区域
//传入左上的距离的区域
- (UIImage *)stretchableImageWithLeftCapWidth:(NSInteger)leftCapWidth topCapHeight:(NSInteger)topCapHeight;
  • iOS5开始
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
//传入左上右下不拉伸的区域,默认方式是平铺
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets;
//resizingMode 拉伸方式的参数
- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode;
  • 另一种改变图片拉伸方式
    • 在Images.xcassets中选择图片
    • 在slicing属性中选择拉伸范围 
    • 自动计算拉伸范围
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2015-06-26 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
iOS-UIButton 全面解析UIButton 的全面解析
UIButton 的全面解析 建议收藏,用到的时候来这里一查就都明白了 //初始化Button 不用alloca init 的方法 用便利构造器初始化 UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; typedef NS_ENUM(NSInteger, UIButtonType) { UIButtonTypeCustom = 0, -自定义风格 UIButtonTypeSystem NS_ENUM
xx_Cc
2018/05/10
1.7K0
iOS UIButton解读
UIButton的初始化一般使用其类方法,+ (id)buttonWithType:(UIButtonType)buttonType;
珲少
2018/08/15
6070
【IOS开发基础系列】UIButton专题
//需要导入框架QuartzCore.framework,并且在当前类中引用#import
江中散人_Jun
2023/10/16
3250
【IOS开发基础系列】UIButton专题
记录下UIButton的图文妙用和子控件的优先显示
  UIButton的用处特别多,这里只记录下把按钮应用在图文显示的场景,和需要把图片作为按钮的背景图片显示场景;
tandaxia
2018/09/27
1.7K0
记录下UIButton的图文妙用和子控件的优先显示
【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )
转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/50163725
韩曙亮
2023/03/27
3.3K0
【IOS 开发】基本 UI 控件详解 (UISegmentedControl | UIImageView | UIProgressView | UISlider | UIAlertView )
iOS中图片(UIImage)拉伸技巧 原
简单暴力,却是最最常用的方法,直接将图片设置为ImageView的image属性,图片便会随UIImageView对象的大小做自动拉伸。这种拉伸的方法有一个致命的缺陷,它会使图像发生失真与形变。
珲少
2018/08/15
3.6K0
iOS中图片(UIImage)拉伸技巧
                                                                            原
UIButton实现各种图文结合的效果以及原理
iOS的UIButton是一个非常常见而且常用的控件,我们一般用他来实现某个功能的提交以及选择操作。我们可以建立只有文字的Button,也可以建立只有图片的Button,具体的需求要看界面设计的具体情况。有时候我们希望应用的界面元素是丰富多彩的,有时候希望建立一个图文结合的控件来响应用户的手势操作,因此建立一个即有图片也有文字的按钮来实现功能,这个只需要分别调用UIButton的setTitle:forState:和setImage:forSate:两个方法就可以实现具有图片和文字功能的按钮。但是系统默认的图文结合的按钮布局是:图片在左边而文字在右边,而且整体水平和垂直居中。比如下面这个图文按钮:
欧阳大哥2013
2018/08/22
3K0
UIButton实现各种图文结合的效果以及原理
IOS UITextField UIButton 结合
根据textfield的内容显示不同button的图像 image.png import UIKit class ViewController:UIViewController,UITextFiel
用户5760343
2019/07/08
9550
IOS UITextField UIButton 结合
六天完成一个简单iOS App - 第二天
第二天任务: 项目主框架搭建完毕后,就可以从各个模块入手完成项目,这里从最简单的关注模块开始。 关注页面的搭建 登录界面的搭建 方法抽取与知识点总结 一. 关注页面的搭建 关注页面我们这里只做未登录的
xx_Cc
2018/05/10
2.1K0
iOS-自定义 UIButton-文字在左、图片在右(二)
接上一篇--->1. 不自定义 Button,设置titleEdgeInsets 和 imageEdgeInsets 属性,代码如下: UIButton *button02 = [[UIButton alloc] init]; button02.titleLabel.font = [UIFont systemFontOfSize:14]; [button02 setTitle:@"地区" forState:UIControlStateNormal]; UIImage *
用户1890628
2018/05/10
2.6K0
30DaysOfSwift - Day1 计时器
前几天逛Github,偶然看到一个Swift的项目 —— 30DaysOfSwift,作者一共用30个小项目,来熟悉Swift语言,而我正好也学习了一段时间的Swift语言,准备仿照这样的模式,来更加深入的了解UI部分
Originalee
2018/08/30
8150
【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )
LaunchScreen.storyboard 界面 : 该界面不是用于展示应用程序的界面 ;
韩曙亮
2023/03/27
5K0
【 iOS 应用开发 】 UIKit 控件 ( UIView 属性 | storyboard 设置 | 模拟器 | 拖线关联 | tag | 软键盘操作 | 颜色值 | 代码生成控件 | 动画设置 )
它们的定义UIAlertView
code4App有很多伟大的上方UI特效代码,,好牛逼啊,这效果,太炫了,哇,怎么自己写不出来.事实上,再炫的特效,都是依据苹果系统的框架而来,假设我们了解系统框架实现的原理,也就能写出属于自己自己定义的控件,加上各种各样的动画.
全栈程序员站长
2022/07/06
9320
它们的定义UIAlertView
【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
博客地址 : http://blog.csdn.net/shulianghan/article/details/50051499 ;
韩曙亮
2023/03/27
7K0
【iOS 开发】基本 UI 控件详解 (UIButton | UITextField | UITextView | UISwitch)
ios swift模仿qq登陆界面,xml布局
极客学院的视频:http://www.jikexueyuan.com/path/ios/
流川疯
2022/05/06
2.2K0
ios swift模仿qq登陆界面,xml布局
iOS 自定义分段控制器
最近做项目时遇到一些问题,就是项目里原有分段控制器的适用范围有些局限,虽然网上也有很多分段控制器的demo,但自己写的,可控性和项目适用性自己能很明白,所以我专门封装这样一个分段控制器,解决不同场景下的功能需求。
清墨
2019/07/15
1.3K0
iOS 自定义分段控制器
iOS调整按纽图片文字title位置的代码
自定义一个button,要调整 button中的image(注意,不是backgroundImage) 和  title 文字的位置,只需要重写  Button类独对应的两个方法即可:
用户8671053
2021/10/31
9360
Objective-C UIButton 自定义图片位置
在项目中经常会遇到一个按钮上放一个图片 位置有可能会是在标题的上,下,左,右 如果一个按钮,可以单独设置titleEdgeInsets和imageEdgeInsets即可,但是如果有很多 类似的按钮但是设置就很麻烦。为了解决这个问题 我们写一个UIButton的Category
赵哥窟
2018/09/13
8210
Objective-C UIButton 自定义图片位置
自学Swift之路(一)UI入手之基本控件
本系列文章都是以有OC基础来写的,所以注释不会写太多,对基础不够了解的同学可能不太适合,另外本系列文章不是以教程式的形式来写,是记录学习过程的,所以不会有多少讲解 第一步:创建工程 A62A869C-
清墨
2018/05/07
2.9K0
自学Swift之路(一)UI入手之基本控件
iOS-自定义 UIButton-文字在左、图片在右(一)
1. 系统默认 Button 添加图片文字样式(见下图): Button默认状态图片文字位置.png 2. 现在想实现如下效果(见下图): 自定义Button图片在右边 文字在左边的效果.p
用户1890628
2018/05/10
3.1K0
推荐阅读
相关推荐
iOS-UIButton 全面解析UIButton 的全面解析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验