Представление коллекции не подчиняется ограничениям в xcode

У меня есть представление коллекции, края которого ограничены безопасной зоной. Однако представление коллекции полностью покрывает весь экран. Теперь, если я изменяю ограничения, удаляю верхнее ограничение и изменяю его на фиксированное ограничение высоты, представление коллекции ВСЕ ЕЩЕ игнорирует его и заполняет весь экран. Когда я удаляю все ограничения, представление коллекции не заполняет весь экран. Эта ошибка влияет только на верхнее ограничение, все остальные ограничения работают нормально.

ОБНОВИТЬ: когда я комментирую некоторые строки в функции делегата дополнительного представления headerView, она снова работает:

  func pressedColour(colour: UIColor){

        let origImage = self.imageView?.image
        let tintedImage = origImage?.withRenderingMode(.alwaysTemplate)
        self.setImage(tintedImage, for: .highlighted)
        //self.imageView?.contentMode = .scaleAspectFill
        self.tintColor = colour
    }

Строки, которые я закомментировал, вызывают эту функцию. Ошибка автоматического размещения

2018-09-13 23:38:16.556318+0100 DoppelChat[59765:15398941] [LayoutConstraints] Unable to simultaneously satisfy constraints.
    Probably at least one of the constraints in the following list is one you don't want. 
    Try this: 
        (1) look at each constraint and try to figure out which you don't expect; 
        (2) find the code that added the unwanted constraint or constraints and fix it. 
(
    "<NSLayoutConstraint:0x60c00028a780 UICollectionView:0x7fac548e6600.top == UILayoutGuide:0x60c0001bea00'UIViewSafeAreaLayoutGuide'.top   (active)>",
    "<NSAutoresizingMaskLayoutConstraint:0x60c0004892e0 h=-&- v=-&- 'UIView-Encapsulated-Layout-Top' UIView:0x7fac59a7e150.minY == 0   (active, names: '|':_UIParallaxDimmingView:0x7fac59a7eb90 )>",
    "<NSLayoutConstraint:0x60c00048b4a0 'UIViewSafeAreaLayoutGuide-top' V:|-(64)-[UILayoutGuide:0x60c0001bea00'UIViewSafeAreaLayoutGuide']   (active, names: '|':UIView:0x7fac59a7e150 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x60c00028a780 UICollectionView:0x7fac548e6600.top == UILayoutGuide:0x60c0001bea00'UIViewSafeAreaLayoutGuide'.top   (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.

Я сузил его до этой строки, вызывающей проблему:

let origImage = self.imageView?.image

нет, просто обычный контроллер представления

God Himself 13.09.2018 21:08

также нечего показывать с ограничениями, это просто обычное выравнивание по верху

God Himself 13.09.2018 21:28

хорошо, я добавил ограничения

God Himself 13.09.2018 21:50
1
3
221
1

Ответы 1

хорошо, я решил это, если это что-то для вас значит, я вместо этого использовал эту функцию для цвета нажатой кнопки:

func pressedColour(colour: UIColor, uiImage: UIImage?,  alphaMultiplier: CGFloat){
        let origImage = uiImage
        let tintedImage = origImage?.withRenderingMode(.alwaysTemplate)
        self.setImage(tintedImage, for: .highlighted)
        var red: CGFloat = 0
        var green: CGFloat = 0
        var blue: CGFloat = 0
        var alpha: CGFloat = 0
        colour.getRed(&red, green: &green, blue: &blue, alpha: &alpha)
        self.tintColor = UIColor(red: red, green: green, blue: blue, alpha: alpha * alphaMultiplier)
    }

а аргумент uiImage, который я передал, был литералом изображения, а не button.imageview.image

Другие вопросы по теме