这种【既带数字,又带图片的按钮】的效果 的实现思路是怎样的?

kakashilw 发布于 2013年12月28日
无人欣赏。

这种【既带数字,又带图片的按钮】的效果的实现思路是怎样的?应该随着数字的变大,按钮也变长, 如下图 ---

alt text

共5条回复
清醒疯子 回复于 2013年12月28日

可不可以通过cell里面插图片和Label来实现呢?:)

adad184 回复于 2013年12月28日

UIButton可以直接支持image和label同时显示

随着文字变长 只需要计算文字的宽度 然后重新调整frame就可以了

yangjie6020 回复于 2013年12月28日

2楼 @adad184 UIButton addSubView UIImageView UILabel 然后计算长度即可

清醒疯子 回复于 2013年12月28日

2楼 @adad184

3楼 @yangjie6020 学习了:)谢谢啊:)我基础太差了:):):)

adad184 回复于 2013年12月29日

3楼 @yangjie6020 UIButton就自带了UIImageVIew和UILabel

之前有个项目我是这样做的 如果需要动态调整宽度的话 略为修改一下代码就可以实现了

#import <UIKit/UIKit.h>

@interface TSSIconButton : UIButton

+ (id)buttonWithTagName:(NSString*)tagName;

@property (nonatomic, strong) UIImage *icon;
@property (nonatomic, strong) UIColor *textColor;
@property (nonatomic, strong) NSString *text;
@property (nonatomic, strong) UIFont *textFont;

@end



#import "TSSIconButton.h"

@implementation TSSIconButton


+ (id)buttonWithTagName:(NSString *)tagName
{
    TSSIconButton *btn = [TSSIconButton buttonWithType:UIButtonTypeCustom];
    btn.userInteractionEnabled = NO;
    [btn setTagName:tagName];
    btn.titleLabel.font = [APP getFont:18];
    btn.titleLabel.lineBreakMode = NSLineBreakByTruncatingTail;
    btn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;
    btn.contentEdgeInsets = UIEdgeInsetsMake(0, 5, 0, 0);
    btn.titleEdgeInsets = UIEdgeInsetsMake(2, 5, 0, 0);

    return btn;
}

- (void)setIcon:(UIImage *)icon
{
    [self setImage:icon forState:UIControlStateNormal];
}

- (void)setText:(NSString *)text
{
    [self setTitle:text forState:UIControlStateNormal];
}

- (void)setTextColor:(UIColor *)textColor
{
    [self setTitleColor:textColor forState:UIControlStateNormal];
}

- (void)setTextFont:(UIFont *)textFont
{
    self.titleLabel.font = textFont;
}

@end
登录 或者 注册