2012-02-22 25 views
1

UIToolBarUINavigationBarに配置しようとしています。UIToolBar背景が透明

UIToolbar* tempFontSizeToolBar = [[UIToolbar alloc] initWithFrame:CGRectMake(kPaginationToolBarOriginX,kPaginationToolBarOriginY,kPaginationToolBarWidth,kPaginationToolBarHeight)]; 

    tempFontSizeToolBar.backgroundColor = [UIColor clearColor]; 

    // create the array to hold the buttons, which then gets added to the toolbar 

    NSMutableArray* buttons = [[NSMutableArray alloc] init]; 
    [tempFontSizeToolBar setTranslucent:YES]; 
    UIBarButtonItem *fontSizeBarButtonItem; 

    fontSizeBarButtonItem = [[UIBarButtonItem alloc] 
         initWithImage:[UIImage imageNamed:KpreviousPageIcon] style:UIBarButtonItemStylePlain target:self action:@selector(movePreviousPage:)]; 

    [buttons addObject:fontSizeBarButtonItem]; 

    [fontSizeBarButtonItem release];fontSizeBarButtonItem = nil; 

    fontSizeBarButtonItem = [[UIBarButtonItem alloc] 
         initWithImage:[UIImage imageNamed:KnextpageIcon] style:UIBarButtonItemStylePlain target:self action:@selector(moveNextPage:)]; 

    [buttons addObject:fontSizeBarButtonItem]; 

    [fontSizeBarButtonItem release];fontSizeBarButtonItem = nil; 

// stick the buttons in the toolbar 
    [tempFontSizeToolBar setItems:buttons animated:NO]; 

    [buttons release];buttons = nil; 

    UIBarButtonItem *rightBarItem = [[UIBarButtonItem alloc] initWithCustomView:tempFontSizeToolBar]; 

    self.navigationItem.rightBarButtonItem = rightBarItem; 

そのUIToolBarの背景色はデフォルトのブルーです。 しかし、NavigationBarの背景イメージがそのツールバーにも表示されるように、ツールバーをクリアカラーで表示する必要があります。

Plsが私に示唆しています。

答えて

3

ここで何をしているのかわかりませんが、あなたのコードは面倒です。あなたは何の努力もしなくても、あなたが望むものを手に入れることができると思います。とにかく、ボタンアイテムはカスタムビューとしてツールバーを持つべきではありません。

UINavigationBarの左側に 'prev'ボタンがあり、右側に 'next'ボタンがある場合は、UINavigationItemのleftBarButtonItemrightBarButtonItemとして設定できます。配列は必要ありません。

'prev'と 'next'をお互いに隣接させ、UINavigationBarの右側に配置する場合は、配列の中に 'next'を最初に配置し、UINavigationItemのsetRightBarButtonItems:animated:を使用します。

どちらの場合も、UIToolbarは必要ありません。 Appleのドキュメントhereに従って、UIToolbarとUINavigationControllerを組み合わせることができます。おそらくあなたが望むものではなく、画面の下部にポップアップしますが、その色合いや背景画像を設定することができます。ツールバーを上に置く必要がある場合は、ツールバーを作成して手動で配置することができます。

幸運を祈る!

+0

ように私は、ナビゲーションバーの上にツールバーを配置しています。私が欲しいのは、ツールバーのボタンがナビゲーションバーに直接置かれているように見えるように、ツールバーは透明でなければならないということです。 – Bharathi

+0

私はすでにそれらの方法を試みました。 setRightBarButtonItems:animated:バージョン4で実行すると、ios 5 .itsがクラッシュするだけです。 – Bharathi

+0

これは、iOS <5では 'setRightBarButtonItems:animated:'と似ていますか? – QED

5

次を使用し、ツールバーを透明にするには、次の

const float colorMask[6] = {222, 255, 222, 255, 222, 255}; 
UIImage *img = [[UIImage alloc] init]; 
UIImage *maskedImage = [UIImage imageWithCGImage: CGImageCreateWithMaskingColors(img.CGImage, colorMask)]; 

[self.toolbar setBackgroundImage:maskedImage forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault]; 
+0

これは、私がiOS 6で遭遇した別の問題に対する正しい動作をシミュレートします。[私がこのテーマで始めたスレッドはここです。](http://stackoverflow.com/questions/16618410/uitoolbar-buttons-with-uiimage- –

2

セットtoolbarStyle -1この

tools.barStyle = -1; // clear background 
+0

)これは、UIViewControllerのルートビューとして、MKMapViewの上にあるUIToolbarでほぼ機能します。残りの問題は、ツールバーのヘアラインがまだ描かれていることです。ここに修正があります:http://stackoverflow.com/questions/19110883/remove-uitoolbar-hairline-in-ios-7 – Barry