Tôi đã thêm một bóng văn bản đến các tế bào trong UITableView của tôi để cung cấp cho họ một cái nhìn khắc:Loại bỏ bóng văn bản trong UITableViewCell khi nó được chọn
cell.textLabel.textColor = [UIColor colorWithWhite:0.2 alpha:1.000];
cell.textLabel.shadowColor = [UIColor whiteColor];
cell.textLabel.shadowOffset = CGSizeMake(0, 1);
Kể từ khi màu bóng thực sự là màu trắng, khi liên tiếp được chọn và trở thành màu xanh, bóng trắng trở nên thực sự có thể nhìn thấy và làm cho văn bản trông xấu xí.
Có ai biết cách xóa bóng trước khi áp dụng kiểu chọn ô mặc định không?
Tôi đã thử:
- Sử dụng
-tableView:willSelectRowAtIndexPath:
để bỏ đặt bóng vớicell.textLabel.shadowColor = nil
nhưng điều này không làm việc trong thời gian - cái bóng bị unset chỉ sau khi chọn phong cách màu xanh được áp dụng. - Kiểm tra
cell.selected
trongtableView:cellForRowAtIndexPath:
trước khi đặt bóng nhưng điều này rõ ràng không hoạt động vì ô không được vẽ lại sau khi chọn.
Tôi cũng đã cố gắng ghi đè phương thức ủy quyền -tableView:willDisplayCell:forRowAtIndexPath:
như Kevin được đề xuất bên dưới. Từ các câu lệnh đăng nhập mà tôi đưa vào, phương thức ủy nhiệm này chỉ được gọi trước khi một ô được rút ra - vào thời điểm một ô được chạm vào, nó đã quá muộn. Đây là mã tôi đã sử dụng
(void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
NSLog(@"in willDisplayCell");
if (cell.highlighted || cell.selected) {
NSLog(@"drawing highlighed or selected cell");
cell.textLabel.shadowColor = nil;
} else {
cell.textLabel.shadowColor = [UIColor whiteColor];
}
}
Thực ra, bạn có thể chỉ cần ghi đè setHighlighted: hoạt ảnh và không chạm vào setSelected: animated at all. Tôi sẽ thử điều đó trước. –
Cảm ơn Mike! Điều này hoạt động hoàn hảo. –
Tôi có thể xác nhận rằng bạn cần ghi đè cả hai. Ô được Tô sáng khi bạn chạm vào ô đó, sau đó Chọn khi bạn nhấc ngón tay lên. Nếu bạn chỉ ghi đè setHighlighted :, bóng sẽ xuất hiện lại khi chạm vào kết thúc.Ngay cả khi bạn chuyển sang một chế độ xem khác sau khi lựa chọn, nó đáng chú ý. – benzado