Is it possible to adjust x,y position for titleLabel of UIButton?

前端 未结 5 675
野趣味
野趣味 2021-01-29 18:25

Is it possible to adjust the x,y position for the titleLabel of a UIButton?

Here is my code:

    UIButton *btn = [UIButton but         


        
相关标签:
5条回答
  • 2021-01-29 18:34

    The easiest way to do it visually is to use the attribute inspector** (appears when editing a xib/storyboard), setting the "edge" property to title, adjusting it's insets, then setting "edge" property to image, and adjusting accordingly. It's usually better than coding it , since it's easier to maintain and highly visual.

    Attribute inspector setting

    0 讨论(0)
  • 2021-01-29 18:35

    This can be done in xib. Select your button, go to "Show the Size Inspector" tab and setup insets.

    0 讨论(0)
  • 2021-01-29 18:38

    Derive from UIButton and implement the following method:

    - (CGRect)titleRectForContentRect:(CGRect)contentRect;
    

    Edit:

    @interface PositionTitleButton : UIButton
    @property (nonatomic) CGPoint titleOrigin;
    @end
    
    @implementation PositionTextButton
    - (CGRect)titleRectForContentRect:(CGRect)contentRect {
      contentRect.origin = titleOrigin;
      return contentRect;
    }
    @end
    
    0 讨论(0)
  • 2021-01-29 18:42

    For my projects I've this extension utility:

    extension UIButton {
    
        func moveTitle(horizontal hOffset: CGFloat, vertical vOffset: CGFloat) {
            self.titleEdgeInsets.left += hOffset
            self.titleEdgeInsets.top += vOffset
        }
    
    }
    
    0 讨论(0)
  • 2021-01-29 18:56
    //make the buttons content appear in the top-left
    [button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
    [button setContentVerticalAlignment:UIControlContentVerticalAlignmentTop];
    
    //move text 10 pixels down and right
    [button setTitleEdgeInsets:UIEdgeInsetsMake(10.0f, 10.0f, 0.0f, 0.0f)];
    

    And in Swift

    //make the buttons content appear in the top-left
    button.contentHorizontalAlignment = .Left
    button.contentVerticalAlignment = .Top
    
    //move text 10 pixels down and right
    button.titleEdgeInsets = UIEdgeInsetsMake(10.0, 10.0, 0.0, 0.0)
    

    Swift 5

    button.contentHorizontalAlignment = .left
    button.contentVerticalAlignment = .top
    button.titleEdgeInsets = UIEdgeInsets(top: 10.0, left: 10.0, bottom: 0.0, right: 0.0)
    
    0 讨论(0)
提交回复
热议问题