A'nın mavi vurgu / seçim rengini nasıl değiştireceğimi merak ediyorum UITableViewCell
, herhangi bir fikriniz var mı?
A'nın mavi vurgu / seçim rengini nasıl değiştireceğimi merak ediyorum UITableViewCell
, herhangi bir fikriniz var mı?
Yanıtlar:
Vurgu rengini birkaç şekilde değiştirebilirsiniz.
Hücrenizin selectionStyle özelliğini değiştirin. Olarak değiştirirseniz UITableViewCellSelectionStyleGray
gri olur.
selectedBackgroundView
Özelliği değiştirin . Aslında mavi gradyanı yaratan bir görünümdür. Bir görünüm oluşturabilir ve istediğinizi çizebilir ve görünümü tablo görünümü hücrelerinizin arka planı olarak kullanabilirsiniz.
selectedBackgroundView
o zaman asla görünmeyecektir. Yalnızca "Seçim" Varsayılan olarak ayarlandıktan sonra, selectedBackgroundView
gösterme. İOS 6 ve 7'de test edildi
cell.selectedBackgroundView = [UIView new];
ve istediğiniz rengi ayarlıyorsunuz:cell.selectedBackgroundView.backgroundColor = [UIColor colorWithHex:@"ecf2f5" andAlpha:1];
Zonble zaten mükemmel bir cevap verdi. UIView
Tablo görünümü hücresine seçilen arka plan görünümü olarak sunulacak bir kısa kod parçacığı eklemenin yararlı olabileceğini düşündüm .
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
seçtiğim arka plan rengiyle oluşturduğum hücreye ayarlıyorumBu benim için iyi çalıştı. Zonble bahşiş için teşekkürler.
UITableViewCell
üç varsayılan seçim stiline sahiptir: -
Uygulama aşağıdaki gibidir: -
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
Swift'de bunu kullanın cellForRowAtIndexPath
let selectedView = UIView()
selectedView.backgroundColor = .white
cell.selectedBackgroundView = selectedView
Seçim renginizin her birinde aynı olmasını istiyorsanız UITableViewCell
, bunu kullanın AppDelegate
.
let selectedView = UIView()
selectedView.backgroundColor = .white
UITableViewCell.appearance().selectedBackgroundView = selectedView
Uygulama çapında değiştirmek istiyorsanız, mantığı Uygulama Temsilcinize ekleyebilirsiniz.
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
}
tamlık için: Kendi alt sınıfınızı oluşturduysanız UITableViewCell
, - (void)setSelected:(BOOL)selected animated:(BOOL)animated
yöntemi uygulayabilir ve içerik görünümüne eklediğiniz bazı görünümlerin arka plan rengini ayarlayabilirsiniz. (durum buysa) veya contentView'in kendisi (kendi görünümlerinizden biri tarafından kapsanmıyorsa).
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
if(selected) {
self.contentView.backgroundColor = UIColor.blueColor;
} else {
self.contentView.backgroundColor = UIColor.whiteColor;
}
}
(kullanmadınız mı? DIV kaynak kodlarının küçük genişliğine sığdırmak için :)
Bu yaklaşımın selectedBackgroundView kullanmaya göre iki avantajı vardır, daha az bellek kullanır ve biraz daha az CPU kullanır, u yüzlerce hücreyi görüntülemedikçe farkına bile varmazsınız.
selectedBackgroundView
, Yöntemin en başında addself. selectedBackgroundView = [UIView new];
selectedBackgroundView
özelliğin ayarlanması gerekmez .
UITableViewCellSelectionStyleDefault
Özel arka plan renginin çalışması için seçim stilini olarak ayarlamam gerekiyor. Başka bir stil varsa, özel arka plan rengi göz ardı edilecektir. İOS 8'de test edildi.
Hücrenin tam kodu aşağıdaki gibidir:
- (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;
}
Dayanarak @ kullanıcının cevap , sadece uygulama kodunuza bu uzantı hiçbir yerinde ekleyebilir ve uygulamanızın her hücreler için film şeridi editörü doğrudan seçim renk var:
@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
}
}
}
Film şeridinizde, UITableViewCell'inizin sınıfını, Nitelikler denetçisinde UIDesignableTableViewCell olarak ayarlayın, hücrenizin seçili rengini herhangi bir renge değiştirebilirsiniz.
Bunu tüm hücreleriniz için kullanabilirsiniz. Nitelikler denetçiniz böyle görünecek.
UIColor.clear
değil UIColor.clearColor()
. Bunun Swift'de de bir değişiklik olup olmadığından emin değilim ama aynı zamanda onsuz da çalışıyor @IBDesignable
.
Hızlı 3.0 / 4.0
Kendi özel hücrenizi oluşturduysanız, awakeFromNib()
tüm hücreler için seçim rengini değiştirebilirsiniz :
override func awakeFromNib() {
super.awakeFromNib()
let colorView = UIView()
colorView.backgroundColor = UIColor.orange.withAlphaComponent(0.4)
self.selectedBackgroundView = colorView
}