当前位置:首页 > 开发 > 移动开发 > 正文

自定义按钮, 图片在上, 文字在下, 居中显示

发表于: 2015-06-03   作者:dcj3sjt126com   来源:转载   浏览:
摘要: #import <UIKit/UIKit.h> @interface MyButton : UIButton -(void)setFrame:(CGRect)frame ImageName:(NSString*)imageName Target:(id)target Action:(SEL)action Title:(NSString*)title Font:(CGFloa
#import <UIKit/UIKit.h>

@interface MyButton : UIButton

-(void)setFrame:(CGRect)frame ImageName:(NSString*)imageName Target:(id)target Action:(SEL)action Title:(NSString*)title Font:(CGFloat)font;

@end
#import "MyButton.h"
#import "Constant.h"

@interface MyButton ()
{
        CGRect boundingRect;
}
@end

@implementation MyButton

-(void)setFrame:(CGRect)frame ImageName:(NSString*)imageName Target:(id)target Action:(SEL)action Title:(NSString*)title Font:(CGFloat)font
{
    self.frame = frame;
    [self setTitle:title forState:UIControlStateNormal];
    //设置背景图片,可以使文字与图片共存
    [self setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
    [self addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];
    [self.titleLabel setFont:[UIFont systemFontOfSize:font]];
     boundingRect=[self.titleLabel.text boundingRectWithSize:CGSizeMake(frame.size.width, font) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:font]} context:nil];
}

- (CGRect)imageRectForContentRect:(CGRect)contentRect {
    CGFloat width = IsIphone6plus || IsIphone6 ? 40 : 30;
    CGFloat imageX=(self.frame.size.width-width)/2;
    CGFloat imageY=0;
    CGFloat height=width;
    return CGRectMake(imageX, imageY, width, height);
}

- (CGRect)titleRectForContentRect:(CGRect)contentRect {
    CGFloat imageX=(self.frame.size.width-boundingRect.size.width)/2;
    CGFloat imageY=contentRect.origin.y+self.imageView.bounds.size.height;
    CGFloat width=self.frame.size.width;
    CGFloat height=25;
    return CGRectMake(imageX, imageY, width, height);
}

@end

  

自定义按钮, 图片在上, 文字在下, 居中显示

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
Toast用于提示当前应用的状态信息,如网络连接状态等,一般是显示一段文字,也可以定制自己的Toast。
用css实现图片和文字左右居中给,文字在图片下方如下图所示: html代码: <html> <head>
一行文字垂直居中,相信大家都会使用行高。但大家有没有发现,在button标签里的文字,使用行高来居
今天我们来讲一下有关自定义控件的问题,今天讲的这篇是从布局自定义开始的,难度不大,一看就明白
情况1: 1 <!--情况1--> 2 <div style="line-height: 60px; height: 60px;"> 3 <img
实现效果图: 布局文件: <div class="line number1 index0 alt2" style="line-height:24px; fon
<script type="text/javascript"> $(function () { $.messager.defaults = { ok: "是", cance
注意:原文是基于Cocos2d-iphone的教程,现已改为Cocos2d-X-3.0Beta版本。 当你在使用cocos2d制作一
让div1在div2中居中显示,假设div1的宽度为100px;height:100px; 1 .div2{position:relative;} 2 .div
本文综述 想必写css的都知道如何让单行文字在高度固定的容器内垂直居中,但是您知道或者想过让行数
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号