iOS button 文字图片上下/左右排布

网上之前的方法:
http://www.cnblogs.com/LynnAIQ/p/5908664.html

上下:
    //使图片和文字水平居中显示
    self.rechargeButton.contentHorizontalAlignment = UIControlContentHorizontalAlignmentCenter;
    //文字距离上边框的距离增加imageView的高度,距离左边框减少imageView的宽度,距离下边框和右边框距离不变
    [self.rechargeButton setTitleEdgeInsets:UIEdgeInsetsMake(self.rechargeButton.imageView.frame.size.height+10 ,-self.rechargeButton.imageView.frame.size.width, 0.0,0.0)];
    //图片距离右边框距离减少图片的宽度,其它不边
    [self.rechargeButton setImageEdgeInsets:UIEdgeInsetsMake(-10, 0.0,0.0, -self.rechargeButton.titleLabel.bounds.size.width)];

 左右:(因为默认button  图片在左,文字在右, 下面代码是反过来的:   文字  图片)
    [self.DetailButton setTitleEdgeInsets:UIEdgeInsetsMake(0, -self.DetailButton.imageView.bounds.size.width, 0, self.DetailButton.imageView.bounds.size.width)];
    [self.DetailButton setImageEdgeInsets:UIEdgeInsetsMake(0, self.DetailButton.titleLabel.bounds.size.width, 0, -self.DetailButton.titleLabel.bounds.size.width)];

我不确定是不是因为他们的btn.titleLabel的文字宽度一样,所以没发生问题
当我用的时候,图片左右偏移量是错乱的,像这样:

iOS button 文字图片上下/左右排布_第1张图片
false1.png

所以,setImageEdgeInsets这一步操作前,需要计算titleLabel的实际宽度:

    CGSize maxSize = CGSizeMake(1000, shareBtn.titleLabel.height);
    CGSize fitSize = [shareBtn.titleLabel sizeThatFits:maxSize];
    CGFloat w_titleLabel = fitSize.width;

完整代码:

    NSArray *array1 = @[@"微信",@"朋友圈",@"QQ",@"QQ空间"];
    NSArray *array2 = @[@"fenxiangweixin",@"fenxiangpyq",@"fenxiangqq",@"fenxiangkongj"];
    CGFloat wid_icon = (AL_DEVICE_WIDTH-20)/4;
    for (int i=0; i
//方法直接调用
-(void)initButton:(UIButton*)shareBtn{
    CGSize maxSize = CGSizeMake(1000, shareBtn.titleLabel.height);
    CGSize fitSize = [shareBtn.titleLabel sizeThatFits:maxSize];
    CGFloat w_titleLabel = fitSize.width;
    CGFloat w_imageV = shareBtn.imageView.width;
    CGFloat h_imageV = shareBtn.imageView.height;
    
    //文字距离上边框的距离增加imageView的高度,距离左边框减少imageView的宽度,距离下边框和右边框距离不变
    [shareBtn setTitleEdgeInsets:UIEdgeInsetsMake(h_imageV+20 ,-w_imageV, 0.0,0.0)];
    //图片距离右边框距离减少图片的宽度,其它不变
    [shareBtn setImageEdgeInsets:UIEdgeInsetsMake(-10, 0.0,0.0, -w_titleLabel)];
}

结果:

iOS button 文字图片上下/左右排布_第2张图片
false2.png

你可能感兴趣的:(iOS button 文字图片上下/左右排布)