0

のサブクラスで次のコードを使用して、UITableViewCell選択されていないセルにドロップ シャドウを設定しています。UITableView

- (void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated
{
  [super setHighlighted:highlighted animated:animated];
  [self applyLabelDropShadow:!highlighted];
}

- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
  [super setSelected:selected animated:animated];
  [self applyLabelDropShadow:!selected];
}

- (void)applyLabelDropShadow:(BOOL)applyDropShadow
{
  self.textLabel.shadowColor = applyDropShadow ? [UIColor whiteColor] : nil;
  self.textLabel.shadowOffset = CGSizeMake(0, 1);
  self.detailTextLabel.shadowColor = applyDropShadow ? [UIColor whiteColor] : nil;
  self.detailTextLabel.shadowOffset = CGSizeMake(0, 1);
}

このコードは、 Mike Steadによる別のStackOverflow の質問からのもので、正常に動作します。

ただし、行が選択された状態から選択されていない状態に移動すると、detailTextLabelシフトダウンがわずかに見られますが、これは望ましくありません。textLabelこれは、セル の場合には発生しません。

理由はありますか?

4

1 に答える 1

2

[UIColor clearColor]の代わりに非影に使用してみてくださいnil:

- (void)applyLabelDropShadow:(BOOL)applyDropShadow
{
  self.textLabel.shadowColor = applyDropShadow ? [UIColor whiteColor] : [UIColor clearColor];
  self.textLabel.shadowOffset = CGSizeMake(0, 1);
  self.detailTextLabel.shadowColor = applyDropShadow ? [UIColor whiteColor] : [UIColor clearColor];
  self.detailTextLabel.shadowOffset = CGSizeMake(0,1);
}
于 2013-03-02T16:25:30.533 に答える