回答:
ハイライトの色はいくつかの方法で変更できます。
セルのselectionStyleプロパティを変更します。に変更するとUITableViewCellSelectionStyleGray
、灰色になります。
selectedBackgroundView
プロパティを変更します。実際、青のグラデーションを作成するのはビューです。ビューを作成して好きなように描画し、そのビューをテーブルビューのセルの背景として使用できます。
selectedBackgroundView
ました。「選択」をデフォルトに設定した後にのみ、selectedBackgroundView
表示されます。iOS 6および7でテスト済み
cell.selectedBackgroundView = [UIView new];
ません:好きな色を設定します:cell.selectedBackgroundView.backgroundColor = [UIColor colorWithHex:@"ecf2f5" andAlpha:1];
ゾンブルはすでに優れた答えを提供しています。UIView
選択した背景ビューとして表示されるテーブルビューセルにを追加するための短いコードスニペットを含めると便利だと思いました。
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
UIView *selectionColor = [[UIView alloc] init];
selectionColor.backgroundColor = [UIColor colorWithRed:(245/255.0) green:(245/255.0) blue:(245/255.0) alpha:1];
cell.selectedBackgroundView = selectionColor;
UITableViewCell
selectedBackgroundView
を設定しますUIView
これは私にはうまくいきました。先端のゾンブルをありがとう。
UITableViewCell
3つのデフォルトの選択スタイルがあります:-
実装は次のとおりです。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
Swiftでは、これを cellForRowAtIndexPath
let selectedView = UIView()
selectedView.backgroundColor = .white
cell.selectedBackgroundView = selectedView
すべての選択色を同じにするUITableViewCell
場合は、これをで使用しAppDelegate
ます。
let selectedView = UIView()
selectedView.backgroundColor = .white
UITableViewCell.appearance().selectedBackgroundView = selectedView
アプリ全体で変更する場合は、ロジックをアプリデリゲートに追加できます。
class AppDelegate: UIResponder, UIApplicationDelegate {
//... truncated
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
// set up your background color view
let colorView = UIView()
colorView.backgroundColor = UIColor.yellowColor()
// use UITableViewCell.appearance() to configure
// the default appearance of all UITableViewCells in your app
UITableViewCell.appearance().selectedBackgroundView = colorView
return true
}
//... truncated
}
完全を期すために:独自のサブクラスを作成したUITableViewCell
場合は、- (void)setSelected:(BOOL)selected animated:(BOOL)animated
メソッドを実装し、コンテンツビューに追加したビューの背景色を設定できます。(その場合)またはcontentView自体(独自のビューのいずれかでカバーされていない場合)。
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
if(selected) {
self.contentView.backgroundColor = UIColor.blueColor;
} else {
self.contentView.backgroundColor = UIColor.whiteColor;
}
}
(?を使用せず、ソースコードDIVの小さな幅に合わせました:)
このアプローチには、selectedBackgroundViewを使用するよりも2つの利点があります。使用するメモリが少なく、CPUが少し少ないため、uが数百のセルを表示しない限り気付かないこともあります。
selectedBackgroundView
がメソッドの最初に割り当てられた後にのみ機能しますaddself. selectedBackgroundView = [UIView new];
selectedBackgroundView
プロパティの設定がまったくないiOS 12で動作します。
UITableViewCellSelectionStyleDefault
カスタム背景色を機能させるには、選択スタイルをに設定する必要があります。他のスタイルの場合、カスタムの背景色は無視されます。iOS 8でテスト済み。
次のセルの完全なコード:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"MyCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// This is how you change the background color
cell.selectionStyle = UITableViewCellSelectionStyleDefault;
UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor redColor];
[cell setSelectedBackgroundView:bgColorView];
return cell;
}
@user の答えに基づいて、この拡張機能をアプリコードの任意の場所に追加し、アプリのすべてのセルのストーリーボードエディターで直接選択色を設定できます。
@IBDesignable extension UITableViewCell {
@IBInspectable var selectedColor: UIColor? {
set {
if let color = newValue {
selectedBackgroundView = UIView()
selectedBackgroundView!.backgroundColor = color
} else {
selectedBackgroundView = nil
}
}
get {
return selectedBackgroundView?.backgroundColor
}
}
}
@IBDesignable class UIDesignableTableViewCell: UITableViewCell {
@IBInspectable var selectedColor: UIColor = UIColor.clearColor() {
didSet {
selectedBackgroundView = UIView()
selectedBackgroundView?.backgroundColor = selectedColor
}
}
}
ストーリーボードで、UITableViewCellのクラスをUIDesignableTableViewCellに設定します。属性インスペクターで、セルの選択した色を任意の色に変更できます。
これをすべてのセルに使用できます。これが、属性インスペクターの外観です。
UIColor.clear
ではありませんUIColor.clearColor()
。Swiftでの変更かどうかはわかりませんが、なしでも機能し@IBDesignable
ます。