アルファベット順のインデックスが付いたテーブルビューがあり、サイドアルファベットを使用してリストをすばやく確認しています。馴染みのない人のために、これを使用します:
- (NSInteger)tableView:(UITableView *)tableView sectionForSectionIndexTitle:(NSString *)title atIndex:(NSInteger)index {
私の問題は、私のアプリケーションのスキンが黒くなっていることです。そして今、側面のアルファベットを見るのは難しいです。
アルファベットの色を変更する方法がわかりません。できれば「白」にしたいです。
残念ながら、インデックスに表示されるテキストの色をカスタマイズすることはできません。最も近いのは、インデックスの背景色とフォントを変更することです。
EricTableonによるiPhone Developersクックブックには、UITableViewIndexビュー(ドキュメントに記載されていないクラス)にアクセスする方法を示すコードがいくつかあります。参照がある場合は、本の175ページを参照してください。背景色とフォントにアクセスできます。このクラスに関連する非公式のドキュメント here を見ることができます。
[〜#〜] warning [〜#〜]これは、ドキュメントに記載されていないクラスのドキュメントに記載されていない使用であるため、使用には注意が必要です。
以下は、小さな変更を加えたクックブックのコードスニペットです。
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {
for(UIView *view in [tv subviews])
{
if([[[view class] description] isEqualToString:@"UITableViewIndex"])
{
[view setBackgroundColor:[UIColor whiteColor]];
[view setFont:[UIFont systemFontOfSize:14]];
}
}
//rest of cellForRow handling...
}
これは、UITableViewIndexビューにアクセスして、いくつかの点で変更する方法を示しています。ビューにはサブビューがないように見えるため、インデックスタイトルの配列を使用してカスタム描画を行っている可能性があります。
それは完璧ではありませんが、うまくいけば少し役立つでしょう。
ポール
最小iOSバージョンが6.0より新しい場合は、sectionIndexColor
のUITableView
プロパティを使用できます。
テーブルビューのインデックステキストに使用する色。
@property(nonatomic、retain)UIColor * sectionIndexColor
討論:
テーブルビューでは、ビューの横にインデックスを表示できるため、ユーザーがテーブルのコンテンツをすばやくナビゲートしやすくなります。このプロパティは、この領域に表示されるテキストに使用する色を指定します。
更新日2014.1.13
オープンソースのサードパーティライブラリを見つけます。 GDIIndexBar は、インデックスの外観をカスタマイズするのに役立ちます。
これは、UITableViewのインターフェイスビルダーで簡単に変更できます。ドキュメント化されていないクラスを使用する必要はありませんか?
フォントの色と背景色も変更できるので、下のスクリーンショットをご覧ください。仕事は良いことです!
IOS7以降の場合:
self.tableView.sectionIndexColor = [UIColor whiteColor];
self.tableView.sectionIndexBackgroundColor = [UIColor clearColor];
私は同じ問題を抱えていて、これを行う方法を見つけましたが、これは文書化されていないクラスとメソッドを使用しているので、App Storeにアップロードする前にもう1回考える必要があります。私はこれをiOS5で試しただけなので、以前のバージョンで動作するかどうかわかりません。
Erica Saundersクックブックの例を借りて変更し、テキストの色を赤に変更しました。
- (UITableViewCell *)tableView:(UITableView *)tv cellForRowAtIndexPath:(NSIndexPath *)indexPath {
for(UIView *view in [tv subviews])
{
if([[[view class] description] isEqualToString:@"UITableViewIndex"])
{
[view performSelector:@selector(setIndexColor:) withObject:[UIColor redColor]];
}
}
//rest of cellForRow handling...
}
次のコードを正常に使用しました。
for(UIView *view in [tableView subviews]) {
if([view respondsToSelector:@selector(setIndexColor:)]) {
[view performSelector:@selector(setIndexColor:) withObject:[UIColor whiteColor]];
}
}
これは正常に機能します。これはMooglasの回答と非常によく似ていますが、「UITableViewIndex」という単語の使用は控えています。
TableViewの色合いを設定できます。
[[UITableView appearance] setTintColor:[UIColor purpleColor]];
インデックスアルファベットの色を変更する方法があります。
ヘッダーファイルで、UITableViewをプロパティとして宣言します。
@property (weak, nonatomic) IBOutlet UITableView *mainTable;
次に、実装ファイルのviewDidAppearで、次の行を使用します。
//Change the color of the UITableView index color
_mainTable.sectionIndexColor = [UIColor blackColor];
これが、サイドのインデックスバーの背景色を調整するために見つけた最良の解決策です。それはiOS7とおそらくiOS6で動作します。
これをviewDidLoadに追加します
if ([_tableView respondsToSelector:@selector(setSectionIndexColor:)]) {
_tableView.sectionIndexBackgroundColor = [UIColor clearColor];
_tableView.sectionIndexTrackingBackgroundColor = [UIColor whiteColor];
}
最初の色はデフォルトの色、2番目はスクロール時の背景色です。
Swift 4.1およびXcode 9.4:
tableView.sectionIndexColor = .red
tableView.sectionIndexBackgroundColor = .clear
代替タイトルラベルを含む可変配列を作成します。
-(NSArray * )sectionIndexTitlesForTableView:(UITableView * )tableView
@ ""の配列を返します。引用符の間のスペースの数によって、ハイライトされたスクローラーの幅が決まります。 「sectionIndexTitlesForTableView」でラベル更新関数を呼び出します。その関数で、以前に作成した配列のすべてのラベルをスーパービューから削除します。次に、作成して追加しますが、多くのラベルが必要です。次に、それらをテーブルのスーパービューに追加します。
これらは、ラベルを適切な場所に配置するために必要な線です。
rect.Origin.x = table.frame.Origin.x+table.frame.size.width-rect.size.width-2;
rect.Origin.y = 5+table.frame.Origin.y+counter *(280-rect.size.height-([customIndexLabels count]-1))/([customIndexLabels count]-1);
if ([customIndexLabels lastObject]==thisLabel)
{
rect.Origin.y-=10;
}
お役に立てば幸いです。それは完璧ではありません私はそれを自分で修正するのに十分気にしません。主な問題は、最後のラベルの間隔が均一でないことです。