8 つのセグメントを持つセグメント化されたコントロールがあります。コントロール全体のデフォルトの色合いを変更できますが、コントロールの各セグメントに異なる色を設定できますか? このメソッドを呼び出す新しいクラスで 5.1 で動作するチュートリアルを見つけました。
-(void)setTintColor:(UIColor*)color forTag:(NSInteger)aTag{}
しかし、iOS 6 では動作しません。何かアイデアはありますか?
8 つのセグメントを持つセグメント化されたコントロールがあります。コントロール全体のデフォルトの色合いを変更できますが、コントロールの各セグメントに異なる色を設定できますか? このメソッドを呼び出す新しいクラスで 5.1 で動作するチュートリアルを見つけました。
-(void)setTintColor:(UIColor*)color forTag:(NSInteger)aTag{}
しかし、iOS 6 では動作しません。何かアイデアはありますか?
この問題はここで修正されました。フォーマットの問題により、ソース コードを貼り付けることができませんでした。 サンプルコードはこちら。
編集:リンクからコメントとコードを追加し、フォーマットを修正しました。〜オリー
そのハッキーな修正です。これは機能します。コードを ViewDidAppear に配置します。それはトリックを行います。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear: animated];
dispatch_async(dispatch_get_main_queue(), ^{
for (int i = 0 ; i < [segmentControl.subviews count] ; i++)
{
if ([[segmentControl.subviews objectAtIndex: i] isSelected] )
{
[[segmentControl.subviews objectAtIndex: i] setTintColor: [UIColor blackColor]];
break;
}
}
});
}
セグメントごとに異なるセグメント イメージと色を設定できます。色については、次を使用できます。
//get the subviews of the segmentedcontrol
NSArray *arri = [segmentedControl subviews];
//change the color of every subview(segment) you have
[[arri objectAtIndex:0] setTintColor:[UIColor redColor]];
[[arri objectAtIndex:1] setTintColor:[UIColor greenColor]];
問題が解決することを願っています。
これは、赤色を設定し、iOS 6 と互換性のある簡単なソリューションです。
for ( UIView *segmentView in [segmentedControl subviews] ) {
if ( [segmentView respondsToSelector:@selector(setTintColor:)] ) {
[segmentView performSelector:@selector(setTintColor:)
withObject:[UIColor redColor]];
}
}
その通りです... iOS 6 は、セグメント化されたコントロールのサブビューをサポートしていません....
私はあなたのための代替手段を持っています:
CGRect rect = CGRectMake(0, 0, 80, 44);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context,
[[UIColor redColor] CGColor]);
CGContextFillRect(context, rect);
UIImage *img = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
[segment setImage:img forSegmentAtIndex:0];
プロジェクトにコア グラフィックス フレームワークを追加する必要があります。
インデックスのセグメントの画像を描画できます....しかし、これを使用すると、セグメントのタイトルを使用してテキストを追加できなくなります。上記で使用した画像 'img' の上にもテキストを描画する必要があります。他の方法があれば共有してください。