UI基础_UIButton

1.UIButton背景图的拉伸方法

方法一:

- (UIImage *)resizeImgWithName:(UIImage *)image
{
//第一个参数:设置受保护区域,只有在间距范围交集的内容才能进行相应的拉伸和平铺,意味着要保护四个角点
    //第二个参数:图片是进行拉伸还是平铺:UIImageResizingModeStretch:拉伸  
此处用UIImageResizingModeTile会出现多余的线
UIImageResizingModeStretch效果更好
 return [image resizableImageWithCapInsets:UIEdgeInsetsMake(30, 25, 20, 30) resizingMode:UIImageResizingModeTile];
}

方法二:

//选择图片的正中间进行拉伸
imageNormal = [imageNormal stretchableImageWithLeftCapWidth:imageNormal.size.width*0.5 topCapHeight:imageNormal.size.height*0.5];

2.自定义button内部的label和ImageView的位置

方法一:

/**
 *  返回按钮图片(不是背景图片)的位置
*/
- (CGRect)imageRectForContentRect:(CGRect)contentRect {
    // 获得图片的宽度
    CGFloat imageW = self.imageSize.width;
    CGFloat imageH = imageW;
    // 计算titleLabel的x值
    CGFloat labelX = (contentRect.size.width - self.labelW  - imageW - 5) * 0.5;
    CGFloat imageX = labelX + self.labelW + 5;
    CGFloat imageY = (contentRect.size.height - imageH) * 0.5;

    return CGRectMake(imageX, imageY, imageW, imageH);
}
/**
 *  返回按钮文字的位置
 */
- (CGRect)titleRectForContentRect:(CGRect)contentRect {
    // 获得按钮的宽高
    CGFloat buttonW = contentRect.size.width;
    CGFloat buttonH = contentRect.size.height;

    // 获得图片的宽度
    CGFloat imageW = self.imageSize.width;

    // 计算titleLabel的x值
    CGFloat labelX = (buttonW - self.labelW  - imageW - 5) * 0.5;

    return CGRectMake(labelX, 0, self.labelW , buttonH);
}

方法二:

- (void)layoutSubviews {
    [super layoutSubviews];

    // 获得按钮的宽高
    CGFloat buttonW = self.frame.size.width;
    CGFloat buttonH = self.frame.size.height;
    // 获得图片的宽度
    CGFloat imageW = self.imageView.frame.size.width;
    CGFloat imageH = self.imageView.frame.size.height;

    // 按钮和图片之间的间接
    CGFloat margin = 5;

    // 再调整图片和titleLabel的位置
    CGFloat labelW = self.titleLabel.frame.size.width;
    // 计算label的x值
    CGFloat labelX = (buttonW - labelW - margin - imageW)  * 0.5;
    self.titleLabel.frame = CGRectMake(labelX, 0, labelW, buttonH);

    self.imageView.frame = CGRectMake(CGRectGetMaxX(self.titleLabel.frame) + margin, (buttonH - imageH) * 0.5, imageW, imageH);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值