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改装成上图片下文字的样子,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对我们网站的支持!

(0)

相关推荐

  • iOS的UI开发中Button的基本编写方法讲解

    一.简单说明 一般情况下,点击某个控件后,会做出相应反应的都是按钮 按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置 二.按钮的三种状态 normal(普通状态) 默认情况(Default) 对应的枚举常量:UIControlStateNormal highlighted(高亮状态) 按钮被按下去的时候(手指还未松开) 对应的枚举常量:UIControlStateHighlighted disabled(失效状态,不可用状态) 如果enabled属性为NO,就是处于

  • 详解iOS中UIButton的三大UIEdgeInsets属性用法

    UIEdgeInsets是什么 UIEdgeInsets是什么?我们点进去看一下: typedef struct UIEdgeInsets { CGFloat top, left, bottom, right; // specify amount to inset (positive) for each of the edges. values can be negative to 'outset' } UIEdgeInsets; UIEdgeInsets是个结构体类型.里面有四个参数,分别是:

  • iOS - UIButton(UIEdgeInsets)/设置button上的文字和图片上下垂直居中对齐

    UIEdgeInsets typedef struct UIEdgeInsets { CGFloat top, left, bottom, right; // specify amount to inset (positive) for each of the edges. values can be negative to 'outset' } UIEdgeInsets; 在UIButton中有三个对EdgeInsets的设置:ContentEdgeInsets.titleEdgeInsets

  • IOS代码笔记之勾选"记住密码"整体button

    本文实例为大家分享了IOS记住密码整体button 的实现代码,供大家参考,具体内容如下 一.效果图 二.工程图 三.代码 RootViewController.h #import <UIKit/UIKit.h> @class BECheckBox; @interface RootViewController : UIViewController { BECheckBox *passwordCheck; } @property(nonatomic,retain)BECheckBox *pass

  • 详解iOS中Button按钮的状态和点击事件

    一.按钮的状态 1.UIControlStateNormal 1> 除开UIControlStateHighlighted.UIControlStateDisabled.UIControlStateSelected以外的其他情况,都是normal状态 2> 这种状态下的按钮[可以]接收点击事件 2.UIControlStateHighlighted 1> [当按住按钮不松开]或者[highlighted = YES]时就能达到这种状态 2> 这种状态下的按钮[可以]接收点击事件 3

  • iOS应用开发中导航栏按钮UIBarButtonItem的添加教程

    1.UINavigationController导航控制器如何使用 UINavigationController可以翻译为导航控制器,在iOS里经常用到. 我们看看它的如何使用: 下面的图显示了导航控制器的流程.最左侧是根视图,当用户点击其中的General项时 ,General视图会滑入屏幕:当用户继续点击Auto-Lock项时,Auto-Lock视图将滑入屏幕.相应地,在对象管理上,导航控制器使用了导航堆栈.根视图控制器在堆栈最底层,接下来入栈的是General视图控制器和Auto-Lock

  • iOS自定义button抖动效果并实现右上角删除按钮

    遇到过这种需求要做成类似与苹果删除软件时的动态效果. 1.长按抖动; 2.抖动时出现一个X; 3.点击x,删除button; 4.抖动时,点击按钮,停止抖动; 下面是我的设计思路: 1.继承UIButton: 2.给button在右上角添加一个按钮: 3.给button添加长按手势: 4.给button添加遮盖,抖动时可以拦截点击事件: 有更好的做法,还请斧正. // .m文件 #import "DZDeleteButton.h" #import "UIView+Extens

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

    经常会用到上面是图片,下面是文字的Button.这样的控件可以自定义,但是偶然发现一个直接对系统button进行图片与位置的重新layout实现同样效果的代码,最后使用的按钮是这样的: 代码是通过继承UIButton,然后再重写layoutSubviews方法,对自带的图片和titleLabel进行重新的layout,代码如下: // // ZZZUpDownButton.h // // Copyright © 2016年 George. All rights reserved. // /**

  • IOS 播放系统提示音使用总结(AudioToolbox)

    IOS 播放系统提示音使用总结(AudioToolbox) 开发过程中需要用到苹果自带的系统提示音,下面我总结了一下关于系统提示音播放的方法 第一步首先得导入AudioToolbox框架 #import <AudioToolbox/AudioToolbox.h> 播放系统自带的提示声 播放系统自带的提示声很简单,只需要两行代码就能搞定了: //定义一个SystemSoundID SystemSoundID soundID = 1000;//具体参数详情下面贴出来 //播放声音 AudioSer

  • Android编程调用系统自带的拍照功能并返回JPG文件示例【附demo源码下载】

    本文实例讲述了Android编程调用系统自带的拍照功能返回JPG文件.分享给大家供大家参考,具体如下: package com.eboy.testcamera1; import java.io.File; import java.io.FileOutputStream; import android.app.Activity; import android.content.Intent; import android.graphics.Bitmap; import android.os.Bund

  • Android 开发系统自带语音模块应用

    需求:项目中需要添加语音搜索模块,增加用户体验 解决过程:在网上搜到语音搜索例子,参考网上代码,加入到了自己的项目,完成产品要求.这个问题很好解决,网上能找到很多的资料,但是没有直接导入工程就能用的例子,我这里写了一个完整的Demo,代码可以直接粘贴到自己项目中去,实现了 语音搜索,并将搜索结果展示. 语音搜索大致流程:启动系统自带的Intent,Intent参数设置为RecognizerIntent.ACTION_RECOGNIZE_SPEECH,再加上一些提示参数 intent.putExt

  • Android使用系统自带的相机实现一键拍照功能

    今天分享的是用系统自带的相机实现一键拍照功能. public class MainActivity extends AppCompatActivity { private static final int TAKE_PHOTO = 100; private ImageView iv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setConte

  • iOS多控制器实现带滑动动画第1/2页

    本文实例为大家分享了iOS多控制器实现带滑动动画的具体代码,供大家参考,具体内容如下 主控制器 ,管理控制器 .h文件 //宏 #define kScreenWidth [UIScreen mainScreen].bounds.size.width #define kScreenHeight [UIScreen mainScreen].bounds.size.height #import "MYMainViewController.h" #import "MYFirstVie

  • JavaScript获取系统自带的颜色选择器功能(图)

    效果如图所示:下面是获取系统自带的颜色选择器的代码: function $(obj) { return document.getElementById(obj); } function pickColor() { if (!window.isIE) return; var sColor = $('dlgHelper').ChooseColorDlg(); var color = sColor.toString(16); while (color.length [Ctrl+A 全选 注:如需引入外

  • 用系统自带工具在安装系统时给新硬盘分区图解_图解硬盘分区

    用系统自带工具在安装系统时给新硬盘分区图解 screen.width-461) window.open('/upload/20071011135718630.jpg');" src="http://files.jb51.net/upload/20071011135718630.jpg" border=0> screen.width-461) window.open('/upload/20071011135719793.jpg');" src="htt

  • 利用iOS实现系统相册大图浏览功能详解

    前言 本文主要给大家介绍了关于iOS实现系统相册大图浏览功能的相关资料,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧. 最终效果图 大图浏览 实现过程 创建两个UICollectionView分别放置大图和缩略图 实现大图和缩略图的联动 实现当前展示的大图对应的缩略图放大效果 实现原理 创建collectionView非常简单,只要正常创建就好,值得注意的是:由于需要当前展示的图片的缩略图始终保持在屏幕中间位置,所以在创建缩略图的collectionView的时候需要对coll

  • 两种iOS调用系统发短信的方法

    一.程序外调用系统发短信 这个方法其实很简单,直接调用openURL即可: NSURL *url = [NSURL URLWithString:@"sms://15888888888"]; [[UIApplication sharedApplication]openURL:url]; 二.程序内调用系统发短信 这种方法有一个好处就是用户发短信之后还可以回到App. 首先要导入MessageUI.framework,并引入头文件: #import <MessageUI/Messag

随机推荐