I would love to see how to implement this interface with all these constraints to support also landscape.
rotating this app a few times, the player jumps in the middle of the screen with these messages:
2020-10-16 16:35:03.725376+0300 PodcastsCourseLBTA[5612:203705] [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.
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSAutoresizingMaskLayoutConstraint:0x6000024ffe80 h=-&- v=-&- UILayoutContainerView:0x7ff11f205920.minX == 0 (active, names: '|':UIDropShadowView:0x7ff11f523640 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024ffed0 h=-&- v=-&- H:[UILayoutContainerView:0x7ff11f205920]-(0)-| (active, names: '|':UIDropShadowView:0x7ff11f523640 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024fff20 h=-&- v=-&- UILayoutContainerView:0x7ff11f205920.minY == 0 (active, names: '|':UIDropShadowView:0x7ff11f523640 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024fff70 h=-&- v=-&- V:[UILayoutContainerView:0x7ff11f205920]-(0)-| (active, names: '|':UIDropShadowView:0x7ff11f523640 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024f06e0 h=-&- v=-&- UIDropShadowView:0x7ff11f523640.minX == 0 (active, names: '|':UITransitionView:0x7ff11f520320 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024f0730 h=-&- v=-&- H:[UIDropShadowView:0x7ff11f523640]-(0)-| (active, names: '|':UITransitionView:0x7ff11f520320 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024f0780 h=-&- v=-&- UIDropShadowView:0x7ff11f523640.minY == 0 (active, names: '|':UITransitionView:0x7ff11f520320 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024f1bd0 h=-&- v=-&- V:[UIDropShadowView:0x7ff11f523640]-(0)-| (active, names: '|':UITransitionView:0x7ff11f520320 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024f1b80 h=-&- v=-&- UITransitionView:0x7ff11f520320.minX == 0 (active, names: '|':UIWindow:0x7ff11f505690 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024f1b30 h=-&- v=-&- H:[UITransitionView:0x7ff11f520320]-(0)-| (active, names: '|':UIWindow:0x7ff11f505690 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024f1a90 h=-&- v=-&- UITransitionView:0x7ff11f520320.minY == 0 (active, names: '|':UIWindow:0x7ff11f505690 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024f1a40 h=-&- v=-&- V:[UITransitionView:0x7ff11f520320]-(0)-| (active, names: '|':UIWindow:0x7ff11f505690 )>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024f19f0 h=--- v=--- UIWindow:0x7ff11f505690.width == 896 (active)>",
"<NSAutoresizingMaskLayoutConstraint:0x6000024f19a0 h=--- v=--- UIWindow:0x7ff11f505690.height == 414 (active)>",
"<NSLayoutConstraint:0x6000024fcf50 UIImageView:0x7ff11cc0efc0.width == UIImageView:0x7ff11cc0efc0.height (active)>",
"<NSLayoutConstraint:0x6000024fd9a0 UILayoutGuide:0x600003e9d420'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7ff11cc041c0.bottom + 24 (active)>",
"<NSLayoutConstraint:0x6000024fdb30 UILayoutGuide:0x600003e9d420'UIViewSafeAreaLayoutGuide'.trailing == UIStackView:0x7ff11cc041c0.trailing + 24 (active)>",
"<NSLayoutConstraint:0x6000024fdc70 UIStackView:0x7ff11cc041c0.leading == UILayoutGuide:0x600003e9d420'UIViewSafeAreaLayoutGuide'.leading + 24 (active)>",
"<NSLayoutConstraint:0x6000024fdcc0 UIStackView:0x7ff11cc041c0.top == UILayoutGuide:0x600003e9d420'UIViewSafeAreaLayoutGuide'.top (active)>",
"<NSLayoutConstraint:0x6000024f3d40 V:|-(414)-[PodcastsCourseLBTA.PlayerDetailsView:0x7ff11cc04b50] (active, names: '|':UILayoutContainerView:0x7ff11f205920 )>",
"<NSLayoutConstraint:0x6000024f3d90 PodcastsCourseLBTA.PlayerDetailsView:0x7ff11cc04b50.bottom == UILayoutContainerView:0x7ff11f205920.bottom + 414 (active)>",
"<NSLayoutConstraint:0x6000024f3e30 H:|-(0)-[PodcastsCourseLBTA.PlayerDetailsView:0x7ff11cc04b50] (active, names: '|':UILayoutContainerView:0x7ff11f205920 )>",
"<NSLayoutConstraint:0x6000024f3e80 PodcastsCourseLBTA.PlayerDetailsView:0x7ff11cc04b50.trailing == UILayoutContainerView:0x7ff11f205920.trailing (active)>",
"<NSLayoutConstraint:0x6000024ff7a0 'UISV-alignment' UIButton:0x7ff11cc082c0'Dismiss'.leading == UIImageView:0x7ff11cc0efc0.leading (active)>",
"<NSLayoutConstraint:0x6000024ffb10 'UISV-alignment' UIButton:0x7ff11cc082c0'Dismiss'.trailing == UIImageView:0x7ff11cc0efc0.trailing (active)>",
"<NSLayoutConstraint:0x6000024ff430 'UISV-canvas-connection' UIStackView:0x7ff11cc041c0.top == UIButton:0x7ff11cc082c0'Dismiss'.top (active)>",
"<NSLayoutConstraint:0x6000024ff5c0 'UISV-canvas-connection' V:[UIStackView:0x7ff11cc146a0]-(0)-| (active, names: '|':UIStackView:0x7ff11cc041c0 )>",
"<NSLayoutConstraint:0x6000024ff890 'UISV-canvas-connection' UIStackView:0x7ff11cc041c0.leading == UIButton:0x7ff11cc082c0'Dismiss'.leading (active)>",
"<NSLayoutConstraint:0x6000024ff8e0 'UISV-canvas-connection' H:[UIButton:0x7ff11cc082c0'Dismiss']-(0)-| (active, names: '|':UIStackView:0x7ff11cc041c0 )>",
"<NSLayoutConstraint:0x6000024ff610 'UISV-spacing' V:[UIButton:0x7ff11cc082c0'Dismiss']-(5)-[UIImageView:0x7ff11cc0efc0] (active)>",
"<NSLayoutConstraint:0x6000024ff660 'UISV-spacing' V:[UIImageView:0x7ff11cc0efc0]-(5)-[UISlider:0x7ff11cc0f590] (active)>",
"<NSLayoutConstraint:0x6000024ff6b0 'UISV-spacing' V:[UISlider:0x7ff11cc0f590]-(5)-[UIStackView:0x7ff11cc0ff20] (active)>",
"<NSLayoutConstraint:0x6000024ff700 'UISV-spacing' V:[UIStackView:0x7ff11cc0ff20]-(5)-[UILabel:0x7ff11cc11190] (active)>",
"<NSLayoutConstraint:0x6000024ff750 'UISV-spacing' V:[UILabel:0x7ff11cc11190]-(5)-[UILabel:0x7ff11cc11d50] (active)>",
"<NSLayoutConstraint:0x6000024ff7f0 'UISV-spacing' V:[UILabel:0x7ff11cc11d50]-(5)-[UIStackView:0x7ff11cc11fc0] (active)>",
"<NSLayoutConstraint:0x6000024ff840 'UISV-spacing' V:[UIStackView:0x7ff11cc11fc0]-(5)-[UIStackView:0x7ff11cc146a0] (active)>",
"<NSLayoutConstraint:0x6000024fda90 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x600003e9d420'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':PodcastsCourseLBTA.PlayerDetailsView:0x7ff11cc04b50 )>",
"<NSLayoutConstraint:0x6000024fda40 'UIViewSafeAreaLayoutGuide-left' H:|-(0)-[UILayoutGuide:0x600003e9d420'UIViewSafeAreaLayoutGuide'](LTR) (active, names: '|':PodcastsCourseLBTA.PlayerDetailsView:0x7ff11cc04b50 )>",
"<NSLayoutConstraint:0x6000024fdae0 'UIViewSafeAreaLayoutGuide-right' H:[UILayoutGuide:0x600003e9d420'UIViewSafeAreaLayoutGuide']-(0)-|(LTR) (active, names: '|':PodcastsCourseLBTA.PlayerDetailsView:0x7ff11cc04b50 )>",
"<NSLayoutConstraint:0x6000024fd9f0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x600003e9d420'UIViewSafeAreaLayoutGuide'] (active, names: '|':PodcastsCourseLBTA.PlayerDetailsView:0x7ff11cc04b50 )>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x6000024fcf50 UIImageView:0x7ff11cc0efc0.width == UIImageView:0x7ff11cc0efc0.height (active)>
Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.