文档章节

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
UILabel和UITextView文字换行差异

多行文本换行时,一般要求结尾如果是标点符号,标点符号不能单独占一行,需要将上一行的最后一个文字将和标点符号一起放在下一行。 设置 lineBreakMode = .byWordWrapping,按单词分割换行。...

十八郎
07/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20181018 上课截图

![](https://oscimg.oschina.net/oscnet/49f66c08ab8c59a21a3b98889d961672f30.jpg) ![](https://oscimg.oschina.net/oscnet/a61bc2d618b403650dbd4bf68a671fabecb.jpg)......

小丑鱼00
36分钟前
1
0
WinDbg

参考来自:http://www.cnit.net.cn/?id=225 SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols ctrl + d to open dump_file Microsoft (R) Windows Debugger Version 6.12.0002.633......

xueyuse0012
今天
2
0
OSChina 周五乱弹 —— 想不想把92年的萝莉退货

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @罗马的王:分享松澤由美的单曲《地球ぎ》 很久没看圣斗士星矢了 《地球ぎ》- 松澤由美 手机党少年们想听歌,请使劲儿戳(这里) @开源中国首...

小小编辑
今天
14
2
springBoot条件配置

本篇介绍下,如何通过springboot的条件配置,控制Bean的创建 介绍下开发环境 JDK版本1.8 springboot版本是1.5.2 开发工具为 intellij idea(2018.2) 开发环境为 15款MacBook Pro 前言 很多时候,...

贺小五
今天
1
0
javascript source map 的使用

之前发现VS.NET会为压缩的js文添加一个与文件名同名的.map文件,一直没有搞懂他是用来做什么的,直接删除掉运行时浏览器又会报错,后来google了一直才真正搞懂了这个小小的map文件背后的巨大...

粒子数反转
昨天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部