2012-07-27 61 views
0

我想要的风格TTButton图像位于上面的文字中TTButton出现类似如下:Three20:使用TTStyles

http://tinypic.com/r/29c3oyh/6

你会发现,图像和文本都是中心对齐在TTButton中,图像位于文本上方。无论TTBoxStyle和订购的组合如何,我都无法同时获得图像和文本的正确对齐方式。

- (TTStyle*)happyfaceIcon:(UIControlState)state { 
return [TTImageStyle styleWithImageURL:nil defaultImage:nil contentMode:UIViewContentModeCenter size:CGSizeMake(40, 40) next: 
     [TTBoxStyle styleWithMargin:UIEdgeInsetsMake(0, 20, 0, 0) next:nil]]; 
} 

- (TTStyle*)happyfaceButton:(UIControlState)state { 
return [TTShapeStyle styleWithShape:[TTRectangleShape shape] next: 
     [TTSolidBorderStyle styleWithColor:[UIColor blackColor] width:1 next: 
     [TTSolidFillStyle styleWithColor:[UIColor grayColor] next: 
      [TTBoxStyle styleWithMargin:UIEdgeInsetsMake(45, 2, 5, 2) next: 
      [TTTextStyle styleWithFont:[UIFont boldSystemFontOfSize:10] 
           color:[UIColor blackColor] textAlignment:UITextAlignmentCenter next: 
      [TTPartStyle styleWithName:@"image" style:TTSTYLESTATE(happyfaceIcon:, state) next: nil 
      ]]]]]]; 
} 

回答

1

好吧,它看起来很直截了当。我只需要看TTLauncherButton来查看答案。

基本上TTButton属性isVertical = YES清除了所有问题。

这是我最后的风格,以及如果有人有兴趣

- (TTStyle*)shortcutIcon:(UIControlState)state { 
TTStyle* style = 
[TTBoxStyle styleWithMargin:UIEdgeInsetsMake(-7, 0, 11, 0) next: 
    [TTImageStyle styleWithImageURL:nil defaultImage:nil contentMode:UIViewContentModeCenter 
          size:CGSizeZero next:nil]]; 

if (state == UIControlStateHighlighted || state == UIControlStateSelected) { 
    [style addStyle: 
    [TTBlendStyle styleWithBlend:kCGBlendModeSourceAtop next: 
     [TTSolidFillStyle styleWithColor:RGBACOLOR(0,0,0,0.5) next:nil]]]; 
} 

return style; 
} 

- (TTStyle*)shortcutButton:(UIControlState)state { 
return 
[TTPartStyle styleWithName:@"image" style:TTSTYLESTATE(shortcutIcon:, state) next: 
[TTTextStyle styleWithFont:[UIFont fontWithName:@"Frutiger-Light" size:15] color:TTSTYLEVAR(shortcutTextColor) 
      minimumFontSize:11 shadowColor:nil 
       shadowOffset:CGSizeZero next:nil]]; 
}