как избежать изменения цвета оттенка кнопки при представлении поповера в ios - PullRequest
0 голосов
/ 11 января 2019

У меня есть кнопка, которая показывает всплывающее окно над полноэкранным режимом, основной вид имеет 6 пользовательских видов, которые имеют 5 кнопок с оттенком серого или синего цвета, в зависимости от какого-либо параметра. но когда появляется всплывающее окно, а кнопка внутри таможенного представления становится серой, и как только этот всплывающий элемент исчезает, пользовательский вид получает цвет оттенка, я хочу избежать того, чтобы при отображении всплывающего окна цветовой оттенок кнопки не изменялся. пользовательский вид - это вид внутри uitableviewCell. пользовательский вид определяется как это.

 class ratingDoors: UIView {
    var rating: Int = 0{
        didSet{
            makeRating()
        }
    }

    @IBOutlet var contentView: UIView!
    @IBOutlet weak var button1: UIButton!
    @IBOutlet weak var button2: UIButton!
    @IBOutlet weak var button3: UIButton!
    @IBOutlet weak var button4: UIButton!
    @IBOutlet weak var button5: UIButton!

    override init(frame: CGRect) {
        super.init(frame: frame)
        commonInit()
    }
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        commonInit()
        //fatalError("init(coder:) has not been implemented")
    }
    private func commonInit() {
        //TODO: Do some stuff
        // 1. Load the nib
        Bundle.main.loadNibNamed("ratingDoors", owner: self, options: nil)

        // 2. Add the 'contentView' to self
        addSubview(contentView)
        contentView.frame = self.bounds
        contentView.autoresizingMask = [.flexibleHeight,.flexibleWidth]
    }

    @IBAction func setRating(sender: UIButton){
        rating = sender.tag
        //makeRating()
    }
    func makeRating() {
        button1.configureRatingButton(i: rating)
        button2.configureRatingButton(i: rating)
        button3.configureRatingButton(i: rating)
        button4.configureRatingButton(i: rating)
        button5.configureRatingButton(i: rating)
    }
    }

    extension UIButton{
        func configureRatingButton(i: Int){
            if self.tag <= i {
                self.tintColor = UIColor(red: 90/255, green: 212/255, blue: 227/255, alpha: 1.0)
            }else{
                self.tintColor = UIColor(red: 204/255, green: 204/255, blue: 204/255, alpha: 1)
            }
        }
    }

в табличном представлении у меня есть эта настройка для ячейки

let cell = tableView.dequeueReusableCell(withIdentifier: "ratingCell") as! ratingTableViewCell
        cell.ratingLabel.text = "Ordenado"
            if let ordered = requestManager.instance.user.ordered{
                cell.ratingView.rating = ordered
            }

        return cell

и так для всех 6 строк с одинаковым видом. здесь готовят (для :)

let popoverVC = segue.destination as! popoverViewController
        popoverVC.delegate = self
        popoverVC.modalPresentationStyle = UIModalPresentationStyle.popover
        popoverVC.popoverPresentationController!.delegate = self

начальная конфигурация для tview такая. initial view state

вот вид с представленным поповером. the buttons in gray collor when popover presented так как избежать изменения цвета оттенка в представлении popover?

1 Ответ

0 голосов
/ 13 января 2019

Если вы установите для каждой кнопки tintAdjustmentMode на .normal, они не будут регулировать свой оттенок при представлении всплывающего окна. Другим вариантом может быть использование пользовательского типа кнопки (вместо системной), которая не реагирует на изменения оттенка.

...