def sublist(l1,l2):
s1=" ".join(str(i) for i in l1)
s2=" ".join(str(i) for i in l2)
if s1 in s2:
return True
else:
return False
Попробуйте вызвать layoutIfNeeded
для суперпредставления представления вместо самого представления.
-
У меня была похожая проблема, мой взгляд должен был анимироваться сверху на высоте 0, вниз до высоты> 0 (т.е. (0, 0, 320, 0) до ( 0, 0, 320, 44)).
При использовании Xcode 8 с iOS 10 поведение анимации сильно отличалось. Вместо анимации сверху вниз, анимация вверх и вниз от вертикального центра кадра назначения.
Я исправил это, вместо того, чтобы вызывать layoutIfNeeded
для самого представления, вызывая его для суперпредставления представления. Каким-то образом поведение было восстановлено.
Надеюсь, это поможет!
Согласно документации,
layoutIfNeeded
выкладывает подпредставления (но не рассматривает текущий вид сам). Таким образом, чтобы обновить текущее представление, вам нужно вызватьlayoutIfNeeded
из суперпредставления.
В следующем методе:
[super viewDidLoad];
Напишите эту строку:
[self.view layoutIfNeeded];
Я сделал небольшой тест, изменив H и V маленького красного вида:
self.red_POS_H = NSLayoutConstraint.constraints(withVisualFormat: "H:|-90-[redView]", options: defaultOptions, metrics: nil, views: viewsDictionary)
self.red_POS_V = NSLayoutConstraint.constraints(withVisualFormat: "V:|-30-[redView]", options: defaultOptions, metrics: nil, views: viewsDictionary)
self.view.addConstraints(self.red_POS_V!)
self.view.addConstraints(self.red_POS_H!)
и анимировал его:
// we hope is only one:
let currV = self.red_POS_V![0]
let currH = self.red_POS_H![0]
UIView.animate(withDuration: 3) {
// Make all constraint changes here
currV.constant = 100
currH.constant = 300
self.view.layoutIfNeeded() // Forces the layout of the subtree animation block and then captures all of the frame changes
}
красный вид переместился правильно, если вы закомментировали один Линия в анимации, она работает, горизонтально или вертикально.
Небольшой проект доступен, если Вам это нужно.