3

ここに画像の説明を入力してください

上に示したように、ツールバーにUIImageViewとUILabelを使用してUIBarButtonItemを作成します。私は試した

UIButton *likecommButton = [UIButton buttonWithType:UIButtonTypeCustom];
    likecommButton.backgroundColor = [UIColor clearColor];
    [likecommButton addTarget:self action:@selector(likecommButtonClicked:) forControlEvents:UIControlEventTouchDown];


    UIImageView *likeImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"like.png"]];
    likeImageView.frame = CGRectMake(0.0, 0.0, LikeCommentImageEdge, LikeCommentImageEdge);
    likeImageView.backgroundColor = [UIColor clearColor];
    [likecommButton addSubview:likeImageView];
    [likeImageView release];

    CGSize numberSize = [@"99" sizeWithFont:[UIFont fontWithName:@"Verdana-Bold" size:12] 
                                     constrainedToSize:CGSizeMake(20.0, 20.0)  
                                         lineBreakMode:UILineBreakModeTailTruncation];

    _likeNumberLabel = [[UILabel alloc] initWithFrame: CGRectMake(likeImageView.frame.size.width, 0.0, numberSize.width, numberSize.width)];
    _likeNumberLabel.backgroundColor = [UIColor clearColor];
    _likeNumberLabel.textColor = [UIColor whiteColor];
    _likeNumberLabel.font = [UIFont fontWithName:@"Verdana-Bold" size:12];
    _likeNumberLabel.textAlignment = UITextAlignmentRight;
    _likeNumberLabel.lineBreakMode = UILineBreakModeClip;
    [likecommButton addSubview:_likeNumberLabel];

    UIImageView *commentImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"comment.png"]];
    commentImageView.frame = CGRectMake(_likeNumberLabel.frame.origin.x + _likeNumberLabel.frame.size.width, 0.0, LikeCommentImageEdge, LikeCommentImageEdge);
    commentImageView.backgroundColor = [UIColor clearColor];
    [likecommButton addSubview:commentImageView];
    [commentImageView release];

    _commentNumberLabel = [[UILabel alloc] initWithFrame: CGRectMake(toolBarButtonWidth - numberSize.width, 0.0, numberSize.width, numberSize.width)];
    _commentNumberLabel.backgroundColor = [UIColor clearColor];
    _commentNumberLabel.textColor = [UIColor whiteColor];
    _commentNumberLabel.font = [UIFont fontWithName:@"Verdana-Bold" size:12];
    _commentNumberLabel.textAlignment = UITextAlignmentRight;
    _commentNumberLabel.lineBreakMode = UILineBreakModeClip;
    [likecommButton addSubview:_commentNumberLabel];

    likecommButton.frame = CGRectMake(0.0, 0.0, toolBarButtonWidth, numberSize.height);

    _likeCommCountButton = [[UIBarButtonItem alloc] initWithCustomView:likecommButton];
    _likeCommCountButton.width = toolBarButtonWidth;
    _likeCommCountButton.enabled = NO;

しかし、これしか手に入れることができません

ここに画像の説明を入力してください

最初の画像が示すようにUIBarButtonItemを作成するには、UIImageViewを含め、UILabelにもUIBarButtonItemStyleBorderedスタイルがありますか?

ありがとう


20120506を更新

これは@RAのアイデアに従う-小さなツールバー

ここに画像の説明を入力してください

この問題は、フレームをツールバーに設定する方法を知っていますが、他の2つのUIBarButtonItemsの「Like」と「Comment」の高さを取得できません。次に、小さなツールバーの高さを設定できません。

次に、すべてのコントローラー、2つのimageviewと2つのラベルをUISegmentControlに追加しようとしました

ここに画像の説明を入力してください

ご覧のとおり、3番目のuibarbuttonitem(UISegmentControl 1つ)は他の2つとは異なります。設定しました

segmentControl.tintColor = [UIColor clearColor]; 
    segmentControl.backgroundColor = [UIColor clearColor]; 

うまくいかない。

@RAの方が好きですが、他の2つのUIBarButtonItemの高さを取得して、3番目の小さなツールバーの高さに設定する方法が必要です。


20120509を更新

時間がかかりすぎたので、先に進む必要があります。現在、UISegmentControlソリューションを使用しています(スタイルは少し異なります)。この質問は閉じません。今後も勉強していきます。以下の友達の助け、特に@RA@vishiphoneに感謝します。皆さんは私に別の考えを与えてくれました。私たちがまだ一緒に固執して、より多くの質問を掘り下げることができることを願っています。このトピックは後で続けます。皆さんがまだここにいることを願っています!どうもありがとうございます!

4

5 に答える 5

2

UIButton の通常/ハイライト画像としてこれらを試してください - の customView としてUIBarButtonItem

(伸縮幅あり)

  1. BarButtonPressed;
  2. BarButtonPressed@2x
  3. BarButtonNormal
  4. BarButtonNormal@2x

BarButtonPressed BarButtonPressed@2x BarButtonNormal BarButtonNormal@2x

于 2012-05-20T21:15:44.617 に答える
1

私は正確に、彼らが何をしているのかを知りました。

その画像ではUIToolBar、小さなサイズの を作成しUIBarButtonItem's、その中toolbarに 2 つの画像と 1 つのラベル名を持つ3 つを追加しましたrespectively

その後、それUIToolBarを の subView (または) customView として追加しBarButtonItem with Bordered styleます。

しかし、それらはそのBarbuttons用であるという点trickで、これらの3つのボタンを追加している間です( ->このように、しかし正確ではありません)。UIToolbarnot having any border styleUIBarButtonStyleNone

そのため、2 つの画像と 1 つのラベルがあるように見えます。すでに私はこのようなことをしました。しかし、それほどトリッキーではありません..

于 2012-04-26T15:45:30.827 に答える
1

ここに画像の説明を入力このコード行を試してみてください。これは役立つと思います。

UIView *BtnView = [[UIView alloc] initWithFrame:CGRectMake(0,0,70,35)];
UIButton *myButton = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
[myButton setFrame:CGRectMake(0,3,70,32)];
[myButton setImage:[UIImage imageNamed:@"firstImage.png"] forState:UIControlStateNormal];
[myButton addTarget:self action:@selector(compete) forControlEvents:UIControlEventTouchUpInside];



UIImageView *imageView=[[UIImageView alloc]initWithFrame:CGRectMake(52, -4, 21, 21)];
[imageView setImage:[UIImage imageNamed:@"Secongimage.png"]];
UILabel *badge_Label=[[UILabel alloc]initWithFrame:CGRectMake(5,3, 15, 15)];
badge_Label.backgroundColor=[UIColor clearColor];
badge_Label.font=[UIFont systemFontOfSize:12];
[badge_Label setText:@"20"];
[imageView addSubview:badge_Label];


[BtnView addSubview:myButton];
[BtnView addSubview:imageView];
[myButton release];

UIBarButtonItem *CompeteButton = [[UIBarButtonItem alloc]initWithCustomView:BtnView]; 

self.navigationItem.rightBarButtonItem = CompeteButton;


UIView *leftBtnView = [[UIView alloc] initWithFrame:CGRectMake(0,0,40,40)];
UIButton *menu_Button = [[UIButton buttonWithType:UIButtonTypeCustom] retain];
[menu_Button setFrame:CGRectMake(0,3,37,37)];
[menu_Button setImage:[UIImage imageNamed:@"menubut.png"] forState:UIControlStateNormal];
[menu_Button addTarget:self action:@selector(list) forControlEvents:UIControlEventTouchUpInside];

[leftBtnView addSubview:menu_Button];

UIBarButtonItem *menuButton = [[UIBarButtonItem alloc]initWithCustomView:leftBtnView]; 
self.navigationItem.leftBarButtonItem = menuButton;
于 2012-05-07T04:19:23.367 に答える
0

各サブビューのフレームの設定を見逃したと思います。フレームで追加してみてください。そうすれば、必要に応じて取得できます。

于 2012-04-26T13:42:35.783 に答える
0

と のラッパーとUIViewなる を作成し、それらを this のサブビューとして追加してから、上記のように使用する必要があります。UILabelUiImageViewUiView

_likeCommCountButton = [[UIBarButtonItem alloc] initWithCustomView:_wrapper_view_];

サブビューのフレームを正しく設定することを忘れないでください。

于 2012-04-26T13:43:20.690 に答える