1

に がありUISegmentedControlnavigationBarで作成され、StoryboardOutlet配線されています。にカスタム バッジを追加しようとしましたUISegmentedControlが、失敗しました。バッジは表示されません。

Ps。navigationBar( のスーパービュー)に追加するとカスタム バッジが表示されますUISegmentedControlが、これは私にとって 2 番目のアプローチです。に直接追加したいのですがUISegmentedControl、できますか?

MyTableViewController.h

...

@interface MyTableViewController : UITableViewController{
} 

@property (strong,nonatomic) IBOutlet UISegmentedControl  *segmentedControl;

...

MyTableViewController.m

@synthesize segmentedControl;

...

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];
    CustomBadge *customBadge = [CustomBadge customBadgeWithString:@"1" withStringColor:[UIColor whiteColor] withInsetColor:[UIColor orangeColor] withBadgeFrame:YES withBadgeFrameColor:[UIColor whiteColor] withScale:0.8 withShining:YES];

NSLog(@"self.segmentedControl :%@",self.segmentedControl);
NSLog(@"self.segmentedControl w: %f, h :%f",self.segmentedControle.frame.size.width, self.segmentedControlle.frame.size.height);
NSLog(@"customBadge x: %f, y: %f, w: %f, h :%f", customBadge.frame.origin.x, customBadge.frame.origin.y,customBadge.frame.size.width, customBadge.frame.size.height);

    [self.segmentedControl addSubview:customBadge];
}

...

ログ結果:

self.segmentedControl :<UISegmentedControl: 0x3b7bf0; frame = (83 7; 154 30); opaque = NO; autoresize = RM+BM; layer = <CALayer: 0x3b7c70>>
self.segmentedControl w: 154.000000, h :30.000000
customBadge x: 0.000000, y: 0.000000, w: 20.000000, h :20.000000

これCustomBadgeは、サード パーティのカスタム バッジ ビュー クラスです。

4

2 に答える 2

3

とても良い!ありがとう。現在、セグメント化されたコントロールは、そのコンテンツがサブビューに反映されているという意味で、真のビューではない可能性があります (Mac には、タブ ビューのようなものがあります)。それらはビューの配列を管理するため、サブビューが drawRect メソッドで描画するときは、サブビューに特に注意を払う必要はありません。したがって、このコントロールは drawRect でバッジを描画している可能性があります。さらに調査する必要があります。

それでも、同じサイズのコンテナー UIView を作成し、最初にセグメント化されたコントロールを追加し、次にカスタム バッジを追加してから、そのコンテナー ビューを UINavigationBar に追加するという解決策があります。それはうまくいくはずです。

于 2012-07-28T15:52:56.810 に答える
0

CutomBadgeは使ったことがありませんが、フレームを設定する必要があると思います。

于 2012-07-28T15:30:33.430 に答える