20

私は次のコードを得ました:

- (id)init {
  if (self = [super init]) {
      self.title = @"please wait";
      UIBarButtonItem *favorite = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"star.png"] style:UIBarButtonItemStylePlain target:self action:@selector(buttonFavoriteClicked:)];
      self.navigationItem.rightBarButtonItem = favorite;
  }

  return self;
}

しかし、私のボタンはまだUIBarButtonItemStyleBorderedのボタンのように見えます 代替テキスト

この位置にシンプルなスタイルのボタンを設定する方法はありますか?

4

8 に答える 8

23

代わりにこれを試してください:

- (id)init {
  if (self = [super init]) {
      self.title = @"please wait";

      UIButton *button = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 25, 25)];
      [button setImage:[UIImage imageNamed:@"star.png"] forState:UIControlStateNormal];
      [button addTarget:self action:@selector(buttonFavoriteClicked) forControlEvents:UIControlEventTouchUpInside];
      UIBarButtonItem *favorite = [[UIBarButtonItem alloc] initWithCustomView:button];
      [button release];

      self.navigationItem.rightBarButtonItem = favorite;
  }

  return self;
}

それが役に立てば幸い。

于 2010-03-26T19:57:52.613 に答える
23

インターフェイス ビルダーで UIButton を作成し、希望どおりに見えるようにします。.h に in のアウトレットを作成します。

IBOutlet UIButton * _myButton;

次に、カスタム ビューを使用して右バー ボタン アイテムとして設定します。これにより、境界線がなくなります。

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

これは、UIButton が UIView のサブクラスであるため機能します。

于 2010-05-24T06:25:00.353 に答える
8

または、IB なしのコードでこれを行います。

// add setting button to nav bar
UIImage* settingsGearImg = [UIImage imageNamed:@"settings_gear.png"];
CGRect frameimg = CGRectMake(0, 0, settingsGearImg.size.width, settingsGearImg.size.height);
UIButton *settingsButton = [[UIButton alloc] initWithFrame:frameimg];
[settingsButton setBackgroundImage:settingsGearImg forState:UIControlStateNormal];
[settingsButton addTarget:self action:@selector(settingsButtonAction) forControlEvents:UIControlEventTouchUpInside];
[settingsButton setShowsTouchWhenHighlighted:YES];
UIBarButtonItem *settingButtonItem =[[UIBarButtonItem alloc] initWithCustomView:settingsButton];
self.navigationItem.leftBarButtonItem = settingButtonItem;

結果:

ここに画像の説明を入力

このアイコン画像を使用する場合 (白い背景に白いため、ここには表示されません。リンクはhttp://i.stack.imgur.com/lk5SB.pngです): ここに画像の説明を入力

于 2011-11-21T16:50:30.473 に答える
4

奇妙ですが、うまくいきます。画像/アウトレットに「いいえ」と言ってください!UIBarButtonItemStylePlain プロパティも設定しないでください。トリックは、いくつかの特別な属性を持つ UIToolBar にボタンを配置することです。

UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Cool plain bar"];
UIToolbar *tools = [[UIToolbar alloc]
                    initWithFrame:CGRectMake(0.0f, 0.0f, 44.0f, 44.01f)];
tools.clipsToBounds = NO;
tools.barStyle = -1; // clear background
NSMutableArray *buttons = [[NSMutableArray alloc] initWithCapacity:1];
UIBarButtonItem *bi = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemRefresh target:self action:@selector(refreshTableView)];
[buttons addObject:bi];
[tools setItems:buttons animated:NO];
UIBarButtonItem *rightButtons = [[UIBarButtonItem alloc] initWithCustomView:tools];

item.rightBarButtonItem = rightButtons;
item.hidesBackButton = YES;
[myCoolNavigationBar pushNavigationItem:item animated:NO];
于 2013-02-10T14:39:16.403 に答える
1

フランクの言うとおりですが、このコードは にあるはずviewDidLoadです。ここでの問題は、BarButton がどのように見えるかです。見た目を変えたい場合は、別のタイプの UIView を使用する必要があります。UIButton を UIToolbar に追加できます。

-(void)viewDidLoad {
  [super viewDidLoad];
  self.title = @"please wait";
  self.navigationItem.rightBarButtonItem = [[[UIButton alloc] init] autorelease];
}

編集:

申し訳ありませんが、プレーンな UIBarButtonItem が必要でした。UINavigationBar でこれができるとは思えません。UserInteractionEnabled UILabel を rightBarButtonItem として追加してみてください。機能するかどうかはわかりません。

これは現在不可能のようです。
sbwoodside には解決策があります

于 2010-02-27T18:39:59.600 に答える
0

UI7Kit を試してみませんか? 私にとってはうまく機能し、使いやすいです。

于 2013-11-25T18:33:42.347 に答える
-1
    UIImage *img = [UIImage imageNamed:@"white_star.png"];

      CGSize itemSize = CGSizeMake(20, 20);
      UIGraphicsBeginImageContext(itemSize);
      CGRect imageRect = CGRectMake(0.0, 0.0, itemSize.width, itemSize.height);
      [img drawInRect:imageRect];
      img = UIGraphicsGetImageFromCurrentImageContext();
      UIGraphicsEndImageContext();


  UIBarButtonItem *barButton = [[UIBarButtonItem alloc ] initWithImage:img style:UIBarButtonSystemItemAdd target:self action:@selector(favoriteButtonClicked)];
  barButton.style = UIBarButtonItemStyleBordered;
于 2011-08-22T09:20:18.450 に答える
-1

これを試して、

UIBarButtonItem *barBtn = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"more.png"] style:UIBarButtonItemStylePlain target:self action:@selector(didPressButton)];
于 2013-02-09T03:48:01.747 に答える