3

UIToolbar のインスタンスとその上にボタンを追加しました。各ボタンは UIBarButtonItem のクラスに属します。

私の要件は、各ボタンにカスタマイズされたレイアウトがあることです。Apple が提供するネイティブのボタン スタイルを使用したくありません。したがって、Interface Builder には 3 つのオプション ( Plain 、 Bordered 、 Done ) がありました。私はプレーンスタイルを選択し、背景として追加したい画像をバー項目 -> 画像の下に選択しました。

しかし、それは私にとってはうまくいきませんでした.plainオプションを使用すると、borderとdoneがどこにも近くないので少し近づきますが、それでも画像は白いアウトラインで表示されます. とにかく、ボタンの画像が追加され、そのままのように見えるということはありますか。UIButton を使用しているときの非常に単純なタスクです。UIButton の属性インスペクターで Image オプションを使用し、必要な画像を選択しました。しかし、ここでは UIBarButtonitem を使用している間、まったく機能しません。このように表示されます

ありがとうタイムール

4

4 に答える 4

24

タイムール、

私はあなたが打っているのと同じ問題に遭遇しました。デザイナーは、アプリのナビゲーション バーのボタンのカスタム ルックを指定しました。これは、必要な UIBarButtonItems を生成するために私が作成したユーティリティ メソッドです。必要に応じて変更できるはずです。

+ (UIBarButtonItem *)createSquareBarButtonItemWithTitle:(NSString *)t target:(id)tgt action:(SEL)a
{
    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    // Since the buttons can be any width we use a thin image with a stretchable center point
    UIImage *buttonImage = [[UIImage imageNamed:@"SquareButton.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0];
    UIImage *buttonPressedImage = [[UIImage imageNamed:@"SquareButton_pressed.png"] stretchableImageWithLeftCapWidth:5 topCapHeight:0];

    [[button titleLabel] setFont:[UIFont boldSystemFontOfSize:12.0]];
    [button setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [button setTitleColor:[UIColor whiteColor] forState:UIControlStateHighlighted];
    [button setTitleShadowColor:[UIColor colorWithWhite:1.0 alpha:0.7] forState:UIControlStateNormal];
    [button setTitleShadowColor:[UIColor clearColor] forState:UIControlStateHighlighted];
    [[button titleLabel] setShadowOffset:CGSizeMake(0.0, 1.0)];

    CGRect buttonFrame = [button frame];
    buttonFrame.size.width = [t sizeWithFont:[UIFont boldSystemFontOfSize:12.0]].width + 24.0;
    buttonFrame.size.height = buttonImage.size.height;
    [button setFrame:buttonFrame];

    [button setBackgroundImage:buttonImage forState:UIControlStateNormal];
    [button setBackgroundImage:buttonPressedImage forState:UIControlStateHighlighted];

    [button setTitle:t forState:UIControlStateNormal];

    [button addTarget:tgt action:a forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem *buttonItem = [[UIBarButtonItem alloc] initWithCustomView:button];

    return [buttonItem autorelease];
}
于 2010-06-22T17:26:58.970 に答える
3

ここでの問題は、UIBarButtonItemがUIViewサブクラスではないことです。私も同じ問題を抱えていましたが、解決策は非常に簡単です。

カスタム背景画像を使用してUIButtonオブジェクトを作成し、その後、そのinitWithCustomView:メソッドを使用してUIBarButtonItemのインスタンスを作成し、UIButtonオブジェクトをパラメーターとして渡します。

私があなたを助けることができることを願っています。

于 2010-06-22T14:35:18.120 に答える
2

UIButton を IB の UIToolBar の外側にドラッグ アンド ドロップし、それをフォーマットしてセレクターを割り当て、UIToolBar にドラッグします。,.,, これはうまくいきました!!

于 2012-07-23T07:03:42.417 に答える