with switch guidelines and iphone uibutton textlabel

iphone - guidelines - switch ios



¿es posible ajustar la posición x, y titleLabel de UIButton? (4)

aquí está mi código

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 = ???


Derive de UIButton e implemente el siguiente método:

- (CGRect)titleRectForContentRect:(CGRect)contentRect;

Editar:

@interface PositionTitleButton : UIButton @property (nonatomic) CGPoint titleOrigin; @end @implementation PositionTextButton - (CGRect)titleRectForContentRect:(CGRect)contentRect { contentRect.origin = titleOrigin; return contentRect; } @end


Para mis proyectos, tengo esta utilidad de extensión:

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


La forma más fácil de hacerlo visualmente es usar el inspector de atributos ** (aparece al editar un guión gráfico / guión gráfico), establecer la propiedad " borde " en el título, ajustar sus inserciones, establecer la propiedad "borde" en la imagen y ajustarla según corresponda . Por lo general, es mejor que codificarlo, ya que es más fácil de mantener y muy visual.


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

Y en 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)