Как сделать так, чтобы заголовок TTButtons выравнивался по левому краю? - PullRequest
0 голосов
/ 04 июля 2011

Я знаю, как создать TTButton:

TTButton *epriceButton = [TTButton buttonWithStyle:@"epriceButton:"];

И у меня есть метод:

- (TTStyle *)epriceButton:(UIControlState)state {
    TTShape* shape;
    shape = [TTRoundedRectangleShape shapeWithRadius:4.5];
    UIColor* tintColor = RGBCOLOR(8, 101, 191);
    return [TTSTYLESHEET toolbarButtonForState:state shape:shape tintColor:tintColor font:nil]; 
}

Это хорошо работает.Последнее, что я хочу от этой кнопки, это чтобы ее заголовок был выровнен по левому краю.Я новичок в библиотеке Three20, поэтому я не понимаю, как работают стили.Я обнаружил, что у каждого TTStyle есть следующий метод.Но как несколько стилей работают вместе?

1 Ответ

0 голосов
/ 06 июля 2011

Выравнивание текста для кнопки определяется внутри -(TTStyle*)toolbarButtonForState: shape: tintColor: font:. Поэтому вам нужно будет создать собственную версию этого метода.

Если вы посмотрите на оригинал, вы найдете TTTextStyle в качестве последнего добавляемого стиля. TTTextStyle позволяет вам установить textAlignment с удобным инициализатором

+ (TTTextStyle*)styleWithFont:(UIFont*)font color:(UIColor*)color
              minimumFontSize:(CGFloat)minimumFontSize
                  shadowColor:(UIColor*)shadowColor shadowOffset:(CGSize)shadowOffset
                textAlignment:(UITextAlignment)textAlignment
            verticalAlignment:(UIControlContentVerticalAlignment)verticalAlignment
                lineBreakMode:(UILineBreakMode)lineBreakMode numberOfLines:(NSInteger)numberOfLines
                         next:(TTStyle*)next

Таким образом, ваша реализация может выглядеть следующим образом:

- (TTStyle*)myButtonForState:(UIControlState)state shape:(TTShape*)shape
                        tintColor:(UIColor*)tintColor font:(UIFont*)font {
  UIColor* stateTintColor = [self toolbarButtonColorWithTintColor:tintColor forState:state];
  UIColor* stateTextColor = [self toolbarButtonTextColorForState:state];

  return
  [TTShapeStyle styleWithShape:shape next:
   [TTInsetStyle styleWithInset:UIEdgeInsetsMake(2, 0, 1, 0) next:
    [TTShadowStyle styleWithColor:RGBACOLOR(255,255,255,0.18) blur:0 offset:CGSizeMake(0, 1) next:
     [TTReflectiveFillStyle styleWithColor:stateTintColor next:
      [TTBevelBorderStyle styleWithHighlight:[stateTintColor multiplyHue:1 saturation:0.9 value:0.7]
                                      shadow:[stateTintColor multiplyHue:1 saturation:0.5 value:0.6]
                                       width:1 lightSource:270 next:
       [TTInsetStyle styleWithInset:UIEdgeInsetsMake(0, -1, 0, -1) next:
        [TTBevelBorderStyle styleWithHighlight:nil shadow:RGBACOLOR(0,0,0,0.15)
                                         width:1 lightSource:270 next:
         [TTBoxStyle styleWithPadding:UIEdgeInsetsMake(8, 8, 8, 8) next:
          [TTImageStyle styleWithImageURL:nil defaultImage:nil
                              contentMode:UIViewContentModeScaleToFill size:CGSizeZero next:
           [TTTextStyle styleWithFont:font color:stateTextColor
                                      minimumFontSize:14.0
                                          shadowColor:[UIColor colorWithWhite:0 alpha:0.4] shadowOffset:CGSizeMake(0, -1)
                                        textAlignment:UITextAlignmentLeft
                                    verticalAlignment:UIControlContentVerticalAlignmentCenter
                                        lineBreakMode:UILineBreakModeWordWrap numberOfLines:1
                                                 next:nil]]]]]]]]]];
}
...