UIButton图片文字控件位置自定义(图片居右文字居左、图片居中文字居中、图片居左文字消失等)

2024-02-13 11:38

本文主要是介绍UIButton图片文字控件位置自定义(图片居右文字居左、图片居中文字居中、图片居左文字消失等),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在开发中经常会碰到需要对按钮中的图片文字位置做调整的需求。
第一种方式是通过设置按钮中图片文字的偏移量。通过方法setTitleEdgeInsets和setImageEdgeInsets实现

代码如下:

/*!**方式一***/
- (void)updateBtnStyle_rightImage:(UIButton *)btn {CGFloat btnImageWidth = btn.imageView.bounds.size.width;CGFloat btnLabelWidth = btn.titleLabel.bounds.size.width;CGFloat margin = 3;btnImageWidth += margin;btnLabelWidth += margin;[btn setTitleEdgeInsets:UIEdgeInsetsMake(0, -btnImageWidth, 0, btnImageWidth)];[btn setImageEdgeInsets:UIEdgeInsetsMake(0, btnLabelWidth, 0, -btnLabelWidth)];
}

这种方式对普通的需求是可以满足的,但是操作起来麻烦,不是那么直观。对于像修改图片子控件的宽高这种高度自定义的行为是很难实现的。

第二种方式则可以像布局子视图一样自由调整图片和文字的位置,简单方便。可以调出需要的任意布局方式。

代码如下:

1.在.h文件中:

自定义类ZFButton,继承自UIButton。定义枚举ZFButtonType说明不同的类型。定义实例更新方法- (void)updateButtonStyleWithType:在需要的时候,根据自己的意愿更新成自己想要的样式。

#import <UIKit/UIKit.h>typedef enum : NSUInteger {ZFButtonTypeCenterImageCenterTitle,//图片,文字都居中ZFButtonTypeRightImageLeftTitle,//图片右,文字左ZFButtonTypeLeftImageNoneTitle,//图片左,文字无
} ZFButtonType;@interface ZFButton : UIButton
+ (instancetype)zfButtonWithType:(ZFButtonType)buttonType;- (void)updateButtonStyleWithType:(ZFButtonType)buttonType;
@end

2.中.m文件中:

重写方法- (void)layoutSubviews,根据不同的类型生成不同的布局。

- (void)layoutSubviews {[super layoutSubviews];if (self.type == ZFButtonTypeCenterImageCenterTitle) {[self resetBtnCenterImageCenterTitle];} else if (self.type == ZFButtonTypeLeftImageNoneTitle) {[self resetBtnLeftImageNotTitle];} else if (self.type == ZFButtonTypeRightImageLeftTitle) {[self resetBtnRightImageLeftTitle];}
}

工厂方法zfButtonWithType:创建不同类型的ZFButton。

实例更新方法- (void)updateButtonStyleWithType:更新成不同UI类型的Button

+ (instancetype)zfButtonWithType:(ZFButtonType)buttonType {ZFButton * btn = [ZFButton buttonWithType:UIButtonTypeCustom];btn.type = buttonType;return btn;
}- (void)updateButtonStyleWithType:(ZFButtonType)buttonType {self.type = buttonType;[self layoutSubviews];
}

具体算法如下:

#pragma mark - 私有方法
/*!**方式二***/
- (void)resetBtnCenterImageCenterTitle {self.imageView.frame = self.bounds;[self.imageView setContentMode:UIViewContentModeCenter];self.titleLabel.frame = self.bounds;self.titleLabel.textAlignment = NSTextAlignmentCenter;
}- (void)resetBtnLeftImageNotTitle {CGRect frame = self.bounds;frame.size.width *= 0.5;self.imageView.frame = frame;[self.imageView setContentMode:UIViewContentModeCenter];self.titleLabel.frame = CGRectZero;self.titleLabel.textAlignment = NSTextAlignmentCenter;
}- (void)resetBtnRightImageLeftTitle {CGRect frame = self.bounds;frame.size.width *= 0.5;self.titleLabel.frame = frame;self.titleLabel.textAlignment = NSTextAlignmentCenter;frame.origin.x = (self.bounds.size.width - frame.size.width);self.imageView.frame = frame;[self.imageView setContentMode:UIViewContentModeCenter];
}

效果图和层级图展示如下:

标题

这篇关于UIButton图片文字控件位置自定义(图片居右文字居左、图片居中文字居中、图片居左文字消失等)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/705429

相关文章

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

如何自定义一个log适配器starter

《如何自定义一个log适配器starter》:本文主要介绍如何自定义一个log适配器starter的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录需求Starter 项目目录结构pom.XML 配置LogInitializer实现MDCInterceptor

使用Python实现base64字符串与图片互转的详细步骤

《使用Python实现base64字符串与图片互转的详细步骤》要将一个Base64编码的字符串转换为图片文件并保存下来,可以使用Python的base64模块来实现,这一过程包括解码Base64字符串... 目录1. 图片编码为 Base64 字符串2. Base64 字符串解码为图片文件3. 示例使用注意

c/c++的opencv实现图片膨胀

《c/c++的opencv实现图片膨胀》图像膨胀是形态学操作,通过结构元素扩张亮区填充孔洞、连接断开部分、加粗物体,OpenCV的cv::dilate函数实现该操作,本文就来介绍一下opencv图片... 目录什么是图像膨胀?结构元素 (KerChina编程nel)OpenCV 中的 cv::dilate() 函

Druid连接池实现自定义数据库密码加解密功能

《Druid连接池实现自定义数据库密码加解密功能》在现代应用开发中,数据安全是至关重要的,本文将介绍如何在​​Druid​​连接池中实现自定义的数据库密码加解密功能,有需要的小伙伴可以参考一下... 目录1. 环境准备2. 密码加密算法的选择3. 自定义 ​​DruidDataSource​​ 的密码解密3

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请