控制uibutton图标与标题的上下位置

  UIImage *buttonImage = [UIImage imageNamed:@"share_weibo.png"];

    

    CGFloat buttonImageViewWidth = CGImageGetWidth(buttonImage.CGImage);

    

    CGFloat buttonImageViewHeight = CGImageGetWidth(buttonImage.CGImage);

    

    if ([UIScreen mainScreen].scale == 2.0f) {// iOS 4.0+

        

        buttonImageViewWidth *= 0.5f;

        

        buttonImageViewHeight *= 0.5f;

        

    }

    

    NSString *buttonTitle = @"新浪微博";

    

    UIFont *buttonTitleFont = [UIFont systemFontOfSize:13.0f];

    

    CGSize buttonTitleLabelSize = [buttonTitle sizeWithAttributes:@{ NSFontAttributeName : buttonTitleFont }];

    

    // button宽度,至少为imageView宽度与titleLabel宽度之和

    CGFloat buttonWidth = buttonImageViewWidth + buttonTitleLabelSize.width;

    

    // button高度,至少为imageView高度与titleLabel高度之和

    CGFloat buttonHeight = buttonImageViewHeight + buttonTitleLabelSize.height;

    

    sinaBtn_ = [[UIButton alloc] init];

    

    [sinaBtn_ setCenter:CGPointMake(50, 80)];

    

    [sinaBtn_ setBounds:CGRectMake(0, 0, buttonWidth, buttonHeight)];

    

    [sinaBtn_.titleLabel setFont:buttonTitleFont];

    

    [sinaBtn_ setBackgroundColor:[UIColor clearColor]];

    

    [sinaBtn_ setImage:buttonImage forState:UIControlStateNormal];

    

    [sinaBtn_.imageView setBackgroundColor:[UIColor greenColor]];

    

    [sinaBtn_ setTitle:buttonTitle forState:UIControlStateNormal];

    

    [sinaBtn_ setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];

    

    [sinaBtn_ setTitleColor:[UIColor grayColor] forState:UIControlStateHighlighted];

    

    [sinaBtn_.titleLabel setBackgroundColor:[UIColor whiteColor]];

    

    [backGroundView_ addSubview:sinaBtn_];


    CGPoint buttonBoundsCenter = CGPointMake(CGRectGetMidX(sinaBtn_.bounds), CGRectGetMidY(sinaBtn_.bounds));

    

    // 找出imageView最终的center

    

    CGPoint endImageViewCenter = CGPointMake(buttonBoundsCenter.x, CGRectGetMidY(sinaBtn_.imageView.bounds));

    

    // 找出titleLabel最终的center

    

    CGPoint endTitleLabelCenter = CGPointMake(buttonBoundsCenter.x, CGRectGetHeight(sinaBtn_.bounds)-CGRectGetMidY(sinaBtn_.titleLabel.bounds));

    

    // 取得imageView最初的center

    

    CGPoint startImageViewCenter = sinaBtn_.imageView.center;

    

    // 取得titleLabel最初的center

    

    CGPoint startTitleLabelCenter = sinaBtn_.titleLabel.center;

    

    // 设置imageEdgeInsets

    

    CGFloat imageEdgeInsetsTop = endImageViewCenter.y - startImageViewCenter.y;

    

    CGFloat imageEdgeInsetsLeft = endImageViewCenter.x - startImageViewCenter.x;

    

    CGFloat imageEdgeInsetsBottom = -imageEdgeInsetsTop;

    

    CGFloat imageEdgeInsetsRight = -imageEdgeInsetsLeft;

    

    sinaBtn_.imageEdgeInsets = UIEdgeInsetsMake(imageEdgeInsetsTop, imageEdgeInsetsLeft, imageEdgeInsetsBottom, imageEdgeInsetsRight);

    

    // 设置titleEdgeInsets

    

    CGFloat titleEdgeInsetsTop = endTitleLabelCenter.y-startTitleLabelCenter.y;

    

    CGFloat titleEdgeInsetsLeft = endTitleLabelCenter.x - startTitleLabelCenter.x;

    

    CGFloat titleEdgeInsetsBottom = -titleEdgeInsetsTop;

    

    CGFloat titleEdgeInsetsRight = -titleEdgeInsetsLeft;

    

    sinaBtn_.titleEdgeInsets = UIEdgeInsetsMake(titleEdgeInsetsTop, titleEdgeInsetsLeft, titleEdgeInsetsBottom, titleEdgeInsetsRight);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值