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

来源:互联网 发布:js字符串中间加逗号 编辑:程序博客网 时间:2024/06/06 13:00

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

    

   CGFloat buttonImageViewWidth = CGImageGetWidth(buttonImage.CGImage);

    

   CGFloat buttonImageViewHeight = CGImageGetWidth(buttonImage.CGImage);

    

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

        

        buttonImageViewWidth *=0.5f;

        

        buttonImageViewHeight *=0.5f;

        

    }

    

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

    

   UIFont *buttonTitleFont = [UIFontsystemFontOfSize: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_ = [[UIButtonalloc] init];

    

    [sinaBtn_setCenter:CGPointMake(50,80)];

    

    [sinaBtn_setBounds:CGRectMake(0,0, buttonWidth, buttonHeight)];

    

    [sinaBtn_.titleLabelsetFont:buttonTitleFont];

    

    [sinaBtn_setBackgroundColor:[UIColorclearColor]];

    

    [sinaBtn_setImage:buttonImage forState:UIControlStateNormal];

    

    [sinaBtn_.imageViewsetBackgroundColor:[UIColorgreenColor]];

    

    [sinaBtn_setTitle:buttonTitle forState:UIControlStateNormal];

    

    [sinaBtn_setTitleColor:[UIColorblackColor] forState:UIControlStateNormal];

    

    [sinaBtn_setTitleColor:[UIColorgrayColor] forState:UIControlStateHighlighted];

    

    [sinaBtn_.titleLabelsetBackgroundColor:[UIColorwhiteColor]];

    

    [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);

0 0
原创粉丝点击