2012-01-19 29 views
9

「再生中」はUIBarButtonItemの1行にあります。だから私は間でのPU改行したいナビゲーションバーのUIBarButtonItemに2行を挿入するには

UIBarButtonItem *flipButton = [[UIBarButtonItem alloc] 

           initWithTitle:@"Now Playing" 

           style:UIBarButtonItemStyleBordered 

           target:self 

           action:@selector(flipView)]; 


    self.navigationItem.rightBarButtonItem = flipButton; 

- :「今」AYトップで、「演奏する」bottom.Iであるが、次のコード行を書かれているように私は、2行でそれを配置する必要があります"再生中"。だから私を助けてください。

+0

「Now \ n Playing」はどうですか? – barley

+0

申し訳ありませんが、動作しません。 –

+0

重複しているように見えます。しかし、簡単な方法はないようです... http://stackoverflow.com/questions/2614098/how-can-i-make-the-text-of-a-uibarbuttonitem-wrap-to-two-lines – barley

答えて

4
- (void)createCustomRightBarButton_ 
{ 
    UILabel * addCustomLabel = [[[UILabel alloc] initWithFrame:CGRectMake(0, 0, 64, 25)] autorelease]; 
    addCustomLabel.text [email protected]"Now\nPlaying"; 
    addCustomLabel.textColor = [UIColor whiteColor]; 
    addCustomLabel.font = [UIFont boldSystemFontOfSize:11]; 
    addCustomLabel.numberOfLines = 2; 
    addCustomLabel.backgroundColor = [UIColor clearColor]; 
    addCustomLabel.textAlignment = UITextAlignmentCenter; 

    CGSize size = addCustomLabel.bounds.size; 

    UIGraphicsBeginImageContext(size);  
    CGContextRef context = UIGraphicsGetCurrentContext();  
    [addCustomLabel.layer renderInContext: context]; 
    CGImageRef imageRef = CGBitmapContextCreateImage(context); 
    UIImage * img = [UIImage imageWithCGImage: imageRef]; 
    CGImageRelease(imageRef); 
    CGContextRelease(context); 

    self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithImage:img 
                      style:UIBarButtonItemStyleBordered 
                      target:self 
                      action:@selector(flipView)] 
               autorelease]; 
} 
+0

私はtextColorが無視され、デフォルトの青がナビゲーションアイテムによって常に適用されていることがわかりました。色を変更する場合は、UIBarButtonItemのtintColorを設定します。 – Sky

+0

特に新しいデバイスでは、このコードをコピー/ペーストすると、あいまいなテキストが表示されます。これを回避するには、単にフォント/フレームのサイズを大きくし、UIImageのコンストラクタを使って縮小します。 – Sky

0

あなたがバーボタン内のCustomViewとしてUIButtonをホスト(どちらかバーボタンアイテムのCustomViewを設定したり、あなたのUIBarButtonItemの上に直接1をドラッグすることもできます)、出口としてそれをフックすることができ、その後、行います。私の場合には[はいすることができます

enter image description here

9

になり

-(void) viewDidLoad 
{ 
    //... 
    self.customButton.titleLabel.numberOfLines = 2; 
    self.customButton.suggestionsButton.titleLabel.lineBreakMode = UILineBreakModeWordWrap; 
    self.customButton.suggestionsButton.titleLabel.textAlignment = UITextAlignmentCenter; 
} 

。それはかなり簡単です。複数行のボタンを作成し、それを使用します。 「トリック」は、マルチラインが好きなようにtitleLabelのnumberOfLinesプロパティを設定することです。当面の問題に焦点を当てた答えを維持するために、ここで示されていない

など、カスタムのボタンの種類を指定する場合、それはあなたがすべて...選択状態を設定することを期待
UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom]; 
button.titleLabel.numberOfLines = 0; 
[button setTitle:NSLocalizedString(@"Now\nPlaying", nil) forState:UIControlStateNormal]; 
[button sizeToFit]; 

self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:button]; 

、。

1

enter image description here enter image description here

私は自分で2つのPNGイメージを作成し、それがよさそうです。

UIImage *img = [UIImage imageNamed:@"nowplaying.png"]; 
UIBarButtonItem *nowPlayingButtonItem = [[[UIBarButtonItem alloc] initWithImage:img style:UIBarButtonItemStyleBordered target:delegate action:@selector(presentNowPlayingMovie)] autorelease];