Измените цвет элемента управления изменением порядка в ячейке представления таблицы для iOS 15

#ios #swift #xcode #ios15

#iOS #быстрый #xcode #ios15

Вопрос:

Я использую управление переупорядочением ячеек tableview в своем приложении, и оно хорошо работает до iOS 14, но не работает на iOS 15. В iOS 15 цвет элемента управления переупорядочением не меняется.

Ниже приведен код, который я использовал. Итак, как я могу изменить цвет элемента управления переупорядочением в iOS 15.

 private var myReorderImage : UIImage? = nil; override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { for subViewA in cell.subviews {  if (subViewA.classForCoder.description() == "UITableViewCellReorderControl") { for subViewB in subViewA.subviews { if (subViewB.isKind(of: UIImageView.classForCoder())) { let imageView = subViewB as! UIImageView; if (myReorderImage == nil) { let myImage = imageView.image; myReorderImage = myImage?.withRenderingMode(UIImageRenderingMode.alwaysTemplate); }  imageView.image = myReorderImage; imageView.tintColor = UIColor.red; break;  }  }  break; } } }    

Ответ №1:

В iOS 15 я попытался настроить значок элемента управления изменением порядка, но не смог этого сделать. Поэтому я просто удаляю объект UIImageView из элемента управления изменением порядка. И создайте мой собственный объект просмотра изображений программно и установите изображение в это изображение. И после этого добавьте этот просмотр изображений как addSubview в элемент управления изменением порядка. И это решило мою проблему.

Следуйте коду общего доступа, чтобы он помог другим, кто сталкивается с той же проблемой.

 private var myReorderImage : UIImage? = nil; override func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell, forRowAt indexPath: IndexPath) { for subViewA in cell.subviews { if (subViewA.classForCoder.description() == "UITableViewCellReorderControl") { for subViewB in subViewA.subviews { if (subViewB.isKind(of: UIImageView.classForCoder())) { subViewB.removeFromSuperview() let imageView = UIImageView()  if (self.myReorderImage == nil) {  let myImage = imageView.image myReorderImage = myImage?.withRenderingMode(.alwaysTemplate) } var frame = imageView.frame frame.origin.x = 3 frame.origin.y = 14 frame.size = CGSize(width: 21, height: 9) self.myReorderImage = UIImage(named:"YourImage") // set your image  imageView.frame = frame imageView.image = self.myReorderImage  subViewA.addSubview(imageView) // add imageView to reorder control break;  }  } break; } } }