美文网首页
按钮图片文字位置设置

按钮图片文字位置设置

作者: 6灰太狼9 | 来源:发表于2018-10-08 15:44 被阅读17次

    btn默认图左字右

    //将按钮设置为图片在上,文字在下
    -(void)initButton:(UIButton*)btn{
        float  spacing = 10;//图片和文字的上下间距
        CGSize imageSize = btn.imageView.frame.size;
        CGSize titleSize = btn.titleLabel.frame.size;
        CGSize textSize = [btn.titleLabel.text sizeWithAttributes:@{NSFontAttributeName : btn.titleLabel.font}];
        CGSize frameSize = CGSizeMake(ceilf(textSize.width), ceilf(textSize.height));
        if (titleSize.width + 0.5 < frameSize.width) {
            titleSize.width = frameSize.width;
        }
        CGFloat totalHeight = (imageSize.height + titleSize.height + spacing);
        btn.imageEdgeInsets = UIEdgeInsetsMake(- (totalHeight - imageSize.height), 0.0, 0.0, - titleSize.width);
        btn.titleEdgeInsets = UIEdgeInsetsMake(0, - imageSize.width, - (totalHeight - titleSize.height), 0);
        
    }
    
    //将按钮设置为图片在下,文字在上
    -(void)initButton:(UIButton*)btn{
        float  spacing = 10;
        CGSize imageSize = btn.imageView.frame.size;
        CGSize titleSize = btn.titleLabel.frame.size;
        CGSize textSize = [btn.titleLabel.text sizeWithAttributes:@{NSFontAttributeName : btn.titleLabel.font}];
        CGSize frameSize = CGSizeMake(ceilf(textSize.width), ceilf(textSize.height));
        if (titleSize.width + 0.5 < frameSize.width) {
            titleSize.width = frameSize.width;
        }
        CGFloat totalHeight = (imageSize.height + titleSize.height + spacing);
    
        btn.imageEdgeInsets = UIEdgeInsetsMake(0.0, 0.0, - (totalHeight - imageSize.height), - titleSize.width);
        btn.titleEdgeInsets = UIEdgeInsetsMake(- (totalHeight - titleSize.height), - imageSize.width, 0, 0);
    
    
    }
    
    //将按钮设置为图片在右,文字在左
    -(void)initButton:(UIButton*)btn{
        float  spacing = 10;
        CGSize imageSize = btn.imageView.frame.size;
        CGSize titleSize = btn.titleLabel.frame.size;
        CGSize textSize = [btn.titleLabel.text sizeWithAttributes:@{NSFontAttributeName : btn.titleLabel.font}];
        CGSize frameSize = CGSizeMake(ceilf(textSize.width), ceilf(textSize.height));
        if (titleSize.width + 0.5 < frameSize.width) {
            titleSize.width = frameSize.width;
        }
        CGFloat totalWidth = (imageSize.width + titleSize.width + spacing);
        btn.imageEdgeInsets = UIEdgeInsetsMake(0, titleSize.width, 0, - titleSize.width);
        btn.titleEdgeInsets = UIEdgeInsetsMake(0, -(totalWidth -titleSize.width), 0, (totalWidth -titleSize.width));
        
    }
    

    注意:

    CGSize titleSize = btn.titleLabel.frame.size;
    CGSize textSize = [btn.titleLabel.text sizeWithAttributes:@{NSFontAttributeName : btn.titleLabel.font}];
    

    这两个值不同,titleSize只跟btn的Frame相关。textSize跟titleLabel的字体文案相关。

    相关文章

      网友评论

          本文标题:按钮图片文字位置设置

          本文链接:https://www.haomeiwen.com/subject/wuljaftx.html