1

UIToolBar で単純な UIBarButtonItem を使用する必要があります。

このコードを使用して、カスタム イメージのボタンをナビゲーション バーに追加しました。

UIBarButtonItem *cloneButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"image_sheep.png"] style:UIBarButtonItemStylePlain target:self action:@selector(clone)];
NSArray *rightItems = [NSArray arrayWithObject:cloneButton];
self.navigationItem.rightBarButtonItems = rightItems;

結果は私が望むもので、次のようになります

ナビゲーション バー http://img207.imageshack.us/img207/3383/navigationbara.jpg

UITableViewCell の contentView に追加している UIToolBar で同じことを行う場合

UIBarButtonItem *cloneButton = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"image_sheep.png"] style:UIBarButtonItemStylePlain target:self action:@selector(clone)];
UIBarButtonItem *leftSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace target:nil action:nil];
toolbar.items = [NSArray arrayWithObjects:leftSpace, cloneButton, nil];

問題は、次のようなものが得られることです。

ツールバー http://img209.imageshack.us/img209/1374/toolbary.jpg

これは、UINavigationBar と UIToolBar が同じように描画されないという事実によるものです...誰かがこの問題を解決する方法を指摘できますか?

4

3 に答える 3

2

代わりにおUIToolbar使い ください。UIBarButtonItemStyleBorderedUIBarButtonItemStylePlain

UINavigationBarボタンの外観なしで同じようにボタンを描画することはありません。

于 2012-05-30T07:51:33.860 に答える
1

それが UIToolbar の動作方法です。ドキュメントごと:

アイテムの通常の状態と強調表示された状態を表すツールバー イメージは、UIBarItem クラスから継承されたイメージ プロパティを使用して設定したイメージから派生します。たとえば、画像を白に変換してから、通常の状態の影を追加して面取りします。

そうは言っても、画像の代わりにカスタム ビューを使用して UIBarButtonItem を作成することで、必要な結果を得ることができる場合があります。そのようです:

UIImage *sheepImage = [UIImage imageNamed:@"image_sheep.png"];
UIButton *sheepButton = [UIButton buttonWithType:UIButtonTypeCustom];
[sheepButton setImage:sheepImage forState:UIControlStateNormal];
[sheepButton addTarget:self action:@selector(clone) forControlEvents:UIControlEventTouchUpInside];
[sheepButton setShowsTouchWhenHighlighted:YES];
[sheepButton sizeToFit];
UIBarButtonItem *cloneButton = [[UIBarButtonItem alloc] initWithCustomView:sheepButton];

私はこれをテストしていないので、うまくいくかどうかはわかりません。

于 2012-05-30T07:51:58.507 に答える
0

質問に投稿された画像が表示されなくなりました。しかし、UINavigationBar で UIToolBar の UIBarButtonItemStylePlain を模倣しようとしていることは確かです。

Benzado は、次の行を除いてかなり適切です。

[sheepButton setImage:sheepImage forState:UIControlStateNormal];

これにより、画像がタッチ インジケーターの前に配置されます。UIToolBar は、画像の前にタッチを示します。したがって、UINavigationBar で UIToolBar スタイルを模倣するには:

UIImage *sheepImage = [UIImage imageNamed:@"image_sheep.png"];
UIButton *sheepButton = [UIButton buttonWithType:UIButtonTypeCustom];
[sheepButton setBackgroundImage:sheepImage forState:UIControlStateNormal];
[sheepButton addTarget:self action:@selector(clone) forControlEvents:UIControlEventTouchUpInside];
[sheepButton setShowsTouchWhenHighlighted:YES];
[sheepButton sizeToFit];
UIBarButtonItem *cloneButton = [[UIBarButtonItem alloc] initWithCustomView:sheepButton];
于 2013-04-08T02:59:34.190 に答える