专栏首页Objective-CiOS-自定义 UIButton-文字在左、图片在右(一)

iOS-自定义 UIButton-文字在左、图片在右(一)

1. 系统默认 Button 添加图片文字样式(见下图):

Button默认状态图片文字位置.png

2. 现在想实现如下效果(见下图):

自定义Button图片在右边 文字在左边的效果.png

3. 实现代码

  1. 自定义 HQCustomButton 继承自 UIButton,重写layoutSubviews方法(见如下代码): #import "HQCustomButton.h" @implementation HQCustomButton - (void)layoutSubviews { [super layoutSubviews]; /** 修改 title 的 frame */ // 1.获取 titleLabel 的 frame CGRect titleLabelFrame = self.titleLabel.frame; // 2.修改 titleLabel 的 frame titleLabelFrame.origin.x = 0; // 3.重新赋值 self.titleLabel.frame = titleLabelFrame; /** 修改 imageView 的 frame */ // 1.获取 imageView 的 frame CGRect imageViewFrame = self.imageView.frame; // 2.修改 imageView 的 frame imageViewFrame.origin.x = titleLabelFrame.size.width; // 3.重新赋值 self.imageView.frame = imageViewFrame; } @end
  2. 在创建 Button 的地方用自定义 HQCustomButton 创建即可(见如下代码): HQCustomButton *button01 = [[HQCustomButton alloc] init]; button01.titleLabel.font = [UIFont systemFontOfSize:14]; [button01 setTitle:@"科室" forState:UIControlStateNormal]; UIImage *imageBtn01 = [UIImage imageNamed:@"YellowDownArrow"]; [button01 setImage:imageBtn01 forState:UIControlStateNormal]; [view addSubview:button01]; [button01 mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(view); make.left.equalTo(view).offset(kScreenWidth / 8); }];

4. 实现效果(见下图):

实现效果.png

特别提示:

在重写 HQCustomButton(自定义 Button)的layoutSubviews时候一定要先调用[super layoutSubviews];方法,不然按钮会显示不出来(见下图):

一定要先调用[super layoutSubviews].png

不掉用[super layoutSubviews]会出现的问题.png

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • iOS-UINavigationBar 设置背景颜色及标题

    用户1890628
  • iOS-WKWebView 初步了解

    用户1890628
  • OC 对象的分类

    用户1890628
  • 前端需要掌握的设计模式

    提到设计模式,相信知道的同学都会脱口而出,五大基本原则(SOLID)和 23 种设计模式。SOLID 所指的五大基本原则分别是:单一功能原则、开放封闭原则、里式...

    Nealyang
  • layui省市区三级联动插件

    这个是一个layui省市区三级联动插件,近来使用layui后台模板框架开发后台系统,要用到省市县/区三级联动,本想从网上找个现成的轮子,然没有自己想要的需求,就...

    孤烟
  • [Lab3]Frame-Relay专题

    frame-relay route 102 interface Serial1/2 201

    py3study
  • 二分查找

    爱撒谎的男孩
  • Win10 Bash/WSL调试Linux环境下的.NET Core应用程序

    使用过Mac OS的程序员都知道,在Mac Book Pro上写程序是一件比较爽的事儿,作为dotneter,我们都比较羡慕Mac系统的环境,比如命令行,当然设...

    yoyofx
  • 使用 Node.js 开发简单的脚手架工具

    像我们熟悉的 vue-cli,react-native-cli 等脚手架,只需要输入简单的命令 vue init webpack project,即可快速帮我们...

    程序员宝库
  • 众成人娱乐网站齐称赞Oculus Go,合适吗?

    VRPinea

扫码关注云+社区

领取腾讯云代金券