iphone - è possibile regolare la posizione x, y titleLabel di UIButton?




textlabel (5)

Per i miei progetti ho questa utilità di estensione:

extension UIButton {

    func moveTitle(horizontal hOffset: CGFloat, vertical vOffset: CGFloat) {
        self.titleEdgeInsets.left += hOffset
        self.titleEdgeInsets.top += vOffset
    }

}

ecco il mio codice

UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];

[btn setFrame:CGRectMake(0.0f, 0.0f, 100.0f, 100.0f)];
[btn setTitle:[NSString stringWithFormat:@"Button %d", i+1] forState:UIControlStateNormal];     
[btn addTarget:self action:@selector(buttonPressed:) forControlEvents:UIControlEventTouchUpInside];
btn.titleLabel.frame = ???

Derivare da UIButton e implementare il seguente metodo:

- (CGRect)titleRectForContentRect:(CGRect)contentRect;

Modificare:

@interface PositionTitleButton : UIButton
@property (nonatomic) CGPoint titleOrigin;
@end

@implementation PositionTextButton
- (CGRect)titleRectForContentRect:(CGRect)contentRect {
  contentRect.origin = titleOrigin;
  return contentRect;
}
@end

Il modo più semplice per visualizzarlo visivamente è utilizzare l'ispettore di attributo ** (appare quando si modifica un xib / storyboard), impostare la proprietà " edge " sul titolo, regolarne gli inserti, quindi impostare la proprietà "edge" su immagine e regolare di conseguenza . Di solito è meglio che programmarlo, poiché è più semplice da mantenere e altamente visivo.


//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)];

E 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)

Per impostare il margine superiore, il margine inferiore, il margine sinistro e il margine destro flessibili di un UIView scrivere il seguente codice-

autoresizingMask=UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;




iphone uibutton textlabel