文档章节

iOS UIButton图片文字位置随意放置

记忆淡忘
 记忆淡忘
发布于 2017/05/08 20:37
字数 224
阅读 9
收藏 0

通过继承UIButton 重写LayoutSubViews实现 

.h文件如下

#import <UIKit/UIKit.h>

typedef NS_ENUM(NSInteger, UIMyDefindButtonImageType) {

    

    UIMyDefindButtonImageTypeNormal = 0,//系统默认类型 左图片 右文字

    

    UIMyDefindButtonImageTypeTop,//上图片 下文字

    

    UIMyDefindButtonImageTypeRight,//右图片 左文字

    

    UIMyDefindButtonImageTypeBottom//下图片 上文字

    

};

@interface MyDefindButton : UIButton

 

@property (nonatomic,assign) UIMyDefindButtonImageType myDefindType;

 

@end

 

.m文件如下

#import "MyDefindButton.h"

 

#define Jianju 2 //图片和文字之间的间距

 

@implementation MyDefindButton

 

- (void)layoutSubviews{

    

    [super layoutSubviews];

    

    CGRect titleF = self.titleLabel.frame;

    CGRect imageF = self.imageView.frame;

    

    switch (self.myDefindType) {

        case UIMyDefindButtonImageTypeNormal:

            

            break;

            

        case UIMyDefindButtonImageTypeTop:{

            

            CGRect newImageRect;

            

            newImageRect.origin.x = self.width/2-(imageF.size.width/2);

            

            newImageRect.origin.y = self.height/2 - ((imageF.size.height+Jianju+titleF.size.height)/2);

            

            newImageRect.size.width = imageF.size.width;

            

            newImageRect.size.height = imageF.size.height;

            

            self.imageView.frame = newImageRect;

            

            self.titleLabel.frame = CGRectMake(self.width/2-(titleF.size.width/2), self.imageView.bottom+Jianju, titleF.size.width, titleF.size.height);

            

        }

            break;

        case UIMyDefindButtonImageTypeRight:{

            

            titleF.origin.x = self.width/2-((titleF.size.width + imageF.size.width+Jianju)/2);

            

            self.titleLabel.frame = titleF;

            

            imageF.origin.x = CGRectGetMaxX(titleF) + 3;

            self.imageView.frame = imageF;

            

        }

            break;

            

        case UIMyDefindButtonImageTypeBottom:{

            

            CGRect newTitleRect;

            

            newTitleRect.origin.x = self.width/2-(titleF.size.width/2);

            

            newTitleRect.origin.y = self.height/2 - ((imageF.size.height+Jianju+titleF.size.height)/2);

            

            newTitleRect.size.width = titleF.size.width;

            

            newTitleRect.size.height = titleF.size.height;

            

            self.titleLabel.frame = newTitleRect;

            

            self.imageView.frame = CGRectMake(self.width/2-(imageF.size.width/2), self.titleLabel.bottom+Jianju, imageF.size.width, imageF.size.height);

            

        }

            break;

            

        default:

            break;

    }

    

}

 

/*

// Only override drawRect: if you perform custom drawing.

// An empty implementation adversely affects performance during animation.

- (void)drawRect:(CGRect)rect {

    // Drawing code

}

*/

 

@end

 

© 著作权归作者所有

共有 人打赏支持
记忆淡忘
粉丝 6
博文 88
码字总数 6967
作品 0
长沙
[iOS Animation]-CALayer 专用图层 富文本

富文本 iOS 6中,Apple给UILabel和其他UIKit文本视图添加了直接的属性化字符串的支持,应该说这是一个很方便的特性。不过事实上从iOS3.2开始CATextLayer就已经支持属性化字符串了。这样的话,...

浩浩老师
2015/09/23
0
0
用视图上移解决UITextField/UITextView被键盘遮盖问题

先看看UILabel/UITextField/UITextView的区别: UILabel 显示的文本只读,无法编辑,可以根据文字个数自动换行; UITextField 可编辑本文,但是无法换行,只能在一行显示;当点击键盘上的ret...

yoyoso
2015/03/18
0
0
ios开发日志-button+UIAlertView

去年学习过一段时间的ios开发 后来不知道为什么就没学了 最近准备重新开始学习ios开发 准备每天发一篇日志记录学习过程,也锻炼下自己的语言组织能力,代码写久了话不会说了 CGRect frame =...

平凡简单
2013/05/31
0
0
​Xamarin iOS教程之自定义视图

Xamarin iOS教程之自定义视图 Xamarin iOS自定义视图 工具栏中的视图在实际应用开发中用的很多,但是为了吸引用户的眼球,开发者可以做出一些自定义的视图。 【示例2-33】以下将实现一个自定...

大学霸
2015/06/24
0
0
UI_02 基础视图、程序启动流程

⼀、UITextField UITextField(输⼊框):是控制⽂本输⼊和显⽰的控件 UITextField核⼼功能主要包含3个⽅⾯: ⽂本显⽰ 输⼊控制 外观配置 1、⽂本显⽰ // textField.text = @"你好"; // tex...

黑伞将军
2015/08/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

MySQL 乱七八糟的可重复读隔离级别实现

MySQL 乱七八糟的可重复读隔离级别实现 摘要: 原文可阅读 http://www.iocoder.cn/Fight/MySQL-messy-implementation-of-repeatable-read-isolation-levels 「shimohq」欢迎转载,保留摘要,谢...

DemonsI
52分钟前
2
0
Spring源码阅读——2

在阅读源码之前,先了解下Spring的整体架构: 1、Spring的整体架构 1. Ioc(控制反转) Spring核心模块实现了Ioc的功能,它将类与类之间的依赖从代码中脱离出来,用配置的方式进行依赖关系描...

叶枫啦啦
今天
1
0
jQuery.post() 函数格式详解

jquery的Post方法$.post() $.post是jquery自带的一个方法,使用前需要引入jquery.js 语法:$.post(url,data,callback,type); url(必须):发送请求的地址,String类型 data(可选):发送给后台的...

森火
今天
0
0
referer是什么意思?

看看下面这个回答(打不开网页可以把网址复制到搜索栏): https://zhidao.baidu.com/question/577842068.html

杉下
今天
1
0
使用U盘安装CentOS-解决U盘找不到源

1. 使用UltraISO制作CentOS安装盘 如果需要安装带界面的系统,为保证安装顺利,可选择Everything版本的ISO制作安装盘。 2. 在BIOS中选择使用U盘安装 系统启动后,进入安装选择界面,其中有三...

Houor
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部