当前位置: 首页 > 编程笔记 >

iOS 将系统自带的button改装成上图片下文字的样子

萧晓博
2023-03-14
本文向大家介绍iOS 将系统自带的button改装成上图片下文字的样子,包括了iOS 将系统自带的button改装成上图片下文字的样子的使用技巧和注意事项,需要的朋友参考一下

经常会用到上面是图片,下面是文字的Button。这样的控件可以自定义,但是偶然发现一个直接对系统button进行图片与位置的重新layout实现同样效果的代码,最后使用的按钮是这样的:

代码是通过继承UIButton,然后再重写layoutSubviews方法,对自带的图片和titleLabel进行重新的layout,代码如下:

//
// ZZZUpDownButton.h
//
// Copyright © 2016年 George. All rights reserved.
//
/**
 * 这个Button是系统button变成上面图片,下面文字的样子
 */
#import <UIKit/UIKit.h>
@interface ZZZUpDownButton : UIButton
@end
//
// ZZZUpDownButton.m
// 
// Copyright © 2016年 George. All rights reserved.
//
#import "ZZZUpDownButton.h"
@implementation ZZZUpDownButton
// 加载xib都会先走这个方法
- (void)awakeFromNib {
 [super awakeFromNib];
 // 可以在这里对button进行一些统一的设置
 self.titleLabel.textAlignment = NSTextAlignmentCenter;
 self.titleLabel.numberOfLines = 0;
}
// 在重新layout子控件时,改变图片和文字的位置
- (void)layoutSubviews {
 [super layoutSubviews];
 // 图片上限靠着button的顶部
 CGRect tempImageviewRect = self.imageView.frame;
 tempImageviewRect.origin.y = 0;
 // 图片左右居中,也就是x坐标为button宽度的一半减去图片的宽度
 tempImageviewRect.origin.x = (self.bounds.size.width - tempImageviewRect.size.width) / 2;
 self.imageView.frame = tempImageviewRect;
 CGRect tempLabelRect = self.titleLabel.frame;
 // 文字label的x靠着button左侧(或距离多少)
 tempLabelRect.origin.x = 20;
 // y靠着图片的下部
 tempLabelRect.origin.y = self.imageView.frame.size.height;
 // 宽度与button一致,或者自己改
 tempLabelRect.size.width = self.bounds.size.width - 40;
 // 高度等于button高度减去上方图片高度
 tempLabelRect.size.height = self.bounds.size.height - self.imageView.frame.size.height;
 self.titleLabel.frame = tempLabelRect;
}
@end

以上所述是小编给大家介绍的iOS 将系统自带的button改装成上图片下文字的样子,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!

 类似资料:
  • 本文向大家介绍Android实现自定义带文字和图片Button的方法,包括了Android实现自定义带文字和图片Button的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Android实现自定义带文字和图片Button的方法。分享给大家供大家参考。具体分析如下: 在Android开发中经常会需要用到带文字和图片的button,下面来讲解一下常用的实现办法。 一.用系统自带的Butt

  • 本文向大家介绍Android系统自带分享图片功能,包括了Android系统自带分享图片功能的使用技巧和注意事项,需要的朋友参考一下 简介 记录一个利用系统分享功能进行图片分享的工具类(代码是用Kotlin写的,都是比较简单的语法,部分可能需要自定义的地方都已经标出)。调用方式比较简单: 权限 记得添加文件操作权限, 另外需要注意6.0版本以上的权限管理 具体细节见代码 以上就是本文的全部内容,希望

  • 本文向大家介绍怎样去除图片自带的边距?相关面试题,主要包含被问及怎样去除图片自带的边距?时的应答技巧和注意事项,需要的朋友参考一下 空隙产生的原因,换行符,空格符,制表符等你空白符,字体不为0的情况下,都会产生一个字符的空隙,空格符好会占据一定宽度,使用inline-block会产生元素间的空隙。 解决方法: 1.父元素设置:font-size=0 2.使用flexbox 不清楚图片去除自带边距的

  • 本文向大家介绍IOS CoreLocation实现系统自带定位的方法,包括了IOS CoreLocation实现系统自带定位的方法的使用技巧和注意事项,需要的朋友参考一下 Core Location是iOS SDK中一个提供设备位置的框架。可以使用三种技术来获取位置:GPS、蜂窝或WiFi。在这些技术中,GPS最为精准,如果有GPS硬件,Core Location将优先使用它。如果设备没有GPS硬

  • 本文向大家介绍Windows 2012 r2系统上安装IIS 8.0的方法(图文),包括了Windows 2012 r2系统上安装IIS 8.0的方法(图文)的使用技巧和注意事项,需要的朋友参考一下 Windows 2012及其自带的IIS 8.0是微软公司新一代的Web服务器软件,和老版本的IIS相比,有很多破天荒的新功能。随着微软宣布不再支持Windows XP操作系统,XP系统对应的服务器版

  • 本文向大家介绍VMWARE安装与VMWARE下LINUX系统安装(图文教程),包括了VMWARE安装与VMWARE下LINUX系统安装(图文教程)的使用技巧和注意事项,需要的朋友参考一下 本篇文章主要是介绍了VMWARE安装和VMWARE下LINUX系统安装,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。 1.下载安装VMware,我安装的是VMware 12.VMware从11开始不再支持3