ios代码调整button图片image文字title位置

自定义一个button,要调整 button中的image(注意,不是backgroundImage) 和  title 文字的位置,只需要重写  Button类独对应的两个方法即可:

首先,我们来创建一个 SuperButton继承自 UIButton

//
//  SuperButton.h
//  SuperButton
//
//  Created by 杨斌 on 14/12/25.
//  Copyright (c) 2014年 杨斌. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface SuperButton : UIButton

@end

实现文件

//
//  SuperButton.m
//  SuperButton
//
//  Created by 杨斌 on 14/12/25.
//  Copyright (c) 2014年 杨斌. All rights reserved.
//

#import "SuperButton.h"
#import "UtilsFunctions.h"
@interface SuperButton ()
{
    CGRect boundingRect;

}

@end

@implementation SuperButton
//自定义的初始化方法
- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self)
    {

        [self setTitle:@"项目介绍" forState:UIControlStateNormal];
        [self.titleLabel setFont:[UIFont boldSystemFontOfSize:font]];
        [self setBackgroundImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal];
        [self setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal];
        boundingRect=[self.titleLabel.text boundingRectWithSize:CGSizeMake(320,font) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:font]} context:nil];
    }
    return self;
}
1.重写方法,改变 图片的位置  在  titleRect..方法后执行
- (CGRect)imageRectForContentRect:(CGRect)contentRect
{
    CGFloat imageX=self.frame.size.width/2+boundingRect.size.width/2;
    UIScreen *s=[UIScreen mainScreen];
    CGRect rect=s.bounds;
    CGFloat imageY=contentRect.origin.y+14;
    CGFloat width=24;
    CGFloat height=24;
    return CGRectMake(imageX, imageY, width, height);

}
2.改变title文字的位置,构造title的矩形即可
- (CGRect)titleRectForContentRect:(CGRect)contentRect
{

    CGFloat imageX=(self.frame.size.width-boundingRect.size.width)/2;
    CGFloat imageY=contentRect.origin.y+10;
    CGFloat width=220;
    CGFloat height=25;
    return CGRectMake(imageX, imageY, width, height);

}

@end
我们只要重写 上述的两个方法,就可以实现对  button按钮中的图片和文字的位置的调整
注意: 1.ios7和ios8系统上 上述两个方法 运行的次数会有差异,可以设置标志位,或者自定义一个 button(不要集成button)
      2.代码是经过删减的,大家关键是重写上面的两个方法,重新绘制矩形,即可
时间: 2024-10-25 12:35:04

ios代码调整button图片image文字title位置的相关文章

图片和文字的位置垂直居中和左右摆放

在一些页面中经常涉及到图片和位置的摆放,下面介绍两种常见的摆放: 1:图片和文字垂直居中: <!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>图片和文字垂直居中</title> <style> .wxw span{display: inline-block;width: 100px;vertical-align: middle;} .wx

iOS改变button的image和title位置 根据UIEdgeInsets

刚从网上发现的属性 设置按钮内容   上image下title 在UIButton中有三个对EdgeInsets的设置:ContentEdgeInsets.titleEdgeInsets.imageEdgeInsets @property(nonatomic)          UIEdgeInsets contentEdgeInsets UI_APPEARANCE_SELECTOR; // default is UIEdgeInsetsZero @property(nonatomic)    

IOS UIButton(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; 在UIButton中有三个对EdgeInsets的设置:ContentEdgeInsets.titleEdgeInsets

改变UIButton 图片和文字的位置

//设置字体和图片之间的间距 _btnLeft.titleEdgeInsets = UIEdgeInsetsMake(0, -_btnLeft.imageView.frame.size.width, 0,_btnLeft.imageView.frame.size.width); _btnLeft.imageEdgeInsets = UIEdgeInsetsMake(0, _btnLeft.titleLabel.frame.size.width+5, 0, -_btnLeft.titleLabel

iOS开发UI—Button基础

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

iOS 图片水印、图片合成文字或图片实现

这个需求可能有时候会碰到,比如自己的照片加版权,打水印等 网上的方法,有不少感觉不全对,或者需求不是特全,这里我总结了3种场景下的需求: 1.本地图片合成文字 2.本地图片合成图片 3.网络图片先下载再合成图片 效果图: 这里的合成的size大小,我都是随便写的,没特意计算,大家可以按实际需求自定义. 代码部分: /** 图片合成文字 @param img <#img description#> @param logoText <#logoText description#> @r

UIButton图片文字控件位置自定义(图片居右文字居左、图片居中文字居中、图片居左文字消失等)

在开发中经常会碰到需要对按钮中的图片文字位置做调整的需求.第一种方式是通过设置按钮中图片文字的偏移量.通过方法setTitleEdgeInsets和setImageEdgeInsets实现 代码如下: /*!**方式一***/ - (void)updateBtnStyle_rightImage:(UIButton *)btn { CGFloat btnImageWidth = btn.imageView.bounds.size.width; CGFloat btnLabelWidth = btn

bootstrap-轮播广告页(带图片和文字)

<!DOCTYPE html><html lang="zh-cn"><head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width

图片和文字在同一水平线上

在写页面的时候,我们经常会遇到,图片和文字的位置问题,比如图片和文字在同一水平线上,这个时候如果我们用2个div浮动来实现,或者一个div,图+文字的方式实现,图片往往达不到标准的效果,此时需要调整图片的位置,来使得图片和文字在同一水平线上. <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>Title</title