Apologies
You must be signed in to watch this lesson.
Mini Player View
Podcasts
With the maximize and minimize animations more or less complete, we're now ready to introduce our Mini Player View for the minimize version of our player. This view will contain 4 components, the episode image and title as well as play/pause/fast forward buttons. A very easy way of implementing this is to introduce it to our PlayerDetailsView.xib file right on top of everything. Showing and hiding our views will require some additional code changes during our animations. Let's see how we can do this.

Comments (11)
Farukh
6 years ago
When I play episode, minimize it to miniplayer and press pause (the symbol change to play), but if I change episode the icon stays on the play symbol while it should change in pause for normal... I simply add in didSet of var episode the normal button state: playPauseButton.setImage(#imageLiteral(resourceName: "pause"), for: .normal) miniPlayPauseButton.setImage(#imageLiteral(resourceName: "pause"), for: .normal) and I solve the problem... Is this the right way to do it?
Brian Voong
6 years ago
Farukh
6 years ago
THX :)
Farukh
6 years ago
and this is for the callange: @IBOutlet weak var miniPlayPauseButton: UIButton! { didSet { miniPlayPauseButton.addTarget(self, action: #selector(handlePlayPause), for: .touchUpInside) miniPlayPauseButton.transform = CGAffineTransform(scaleX: 0.6, y: 0.6) } } @IBOutlet weak var miniFastForwardButton: UIButton! { didSet { miniFastForwardButton.transform = CGAffineTransform(scaleX: 0.6, y: 0.6) miniFastForwardButton.addTarget(self, action: #selector(handleFastForward), for: .touchUpInside) } } is it right?
Brian Voong
6 years ago
Farukh
6 years ago
THX :)
syedfa
5 years ago
Hi Brian, and thanks very much for this course! Can you please provide the solution that uses the imageEdgeInsets for the UIButton?
Brian Voong
5 years ago
syedfa
5 years ago
Thank you!
blues
6 years ago
Often when I try to play NPR podcasts it stops after 1 second and console prints: 2018-03-08 18:38:05.326447+0200 PodcastApp[63677:3839597] [Symptoms] { "transportType" : "HTTP Progressive Download", "mediaType" : "HTTP Progressive Download", "BundleID" : "PodcastApp", "name" : "MEDIA_PLAYBACK_STALL", "interfaceType" : "Other" } I added following line to awakeFromNib(): NotificationCenter.default.addObserver(self, selector: #selector(playerStalled(note:)), name: NSNotification.Name.AVPlayerItemPlaybackStalled, object: player.currentItem) Added this function: @objc func playerStalled(note: NSNotification) { let playerItem = note.object as! AVPlayerItem if let player = playerItem.value(forKey: "player") as? AVPlayer { print("stalled - starting again") player.play() } } To the deinit: NotificationCenter.default.removeObserver(self) This is result of lot of googling and I don't know how should I handle this stalling when playing NPR podcasts. But this resumes playing after small break. I also noticed that the Play/Pause button stays at Pause when stalling and podcasts stops playing.
Brian Voong
6 years ago
blues
6 years ago
I'm using VPN so that might have slowed down the connection. Today I can't get it to stall when playing NPR podcasts... When it stalled yesterday it would not resume automatically, so I had to press the play/pause button to resume. With automaticallyWaitsToMinimizeStalling set to true it worked better but buffering time was about ~15 seconds for NPR podcast episodes.
Alex Alx
5 years ago
... just thank you !
Dew Douglass
5 years ago
Damn, this app is looking sick now!
LaFraise
5 years ago
Dude you rock! I've been developing in Swift for the last 4 years and let me tell you that your contents are straight on point what I was looking for. They are just taking my iOS developer skills to another level --> All the way up
Pavlos Nicolaou
5 years ago
Another bug I figured out with the Mini Player is when the Mini player appears, we need to push a bit up the TableView so all the items in the list will show up!
Ally Makongo
4 years ago
Whenever I click mini play pause button, I get constraint error. Setting up player details view... 2019-04-07 12:13:48.559971+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c7d180 UISlider:0x7f92e5808da0.height == 66 (active)>", "<NSLayoutConstraint:0x600000c7ebc0 UIButton:0x7f92e580e2b0'Dismiss'.height == 70 (active)>", "<NSLayoutConstraint:0x600000c7efd0 UILabel:0x7f92e580f8b0'--:--'.height == 22 (active)>", "<NSLayoutConstraint:0x600000c7ed50 UIImageView:0x7f92e580e7c0.height == 180 (active)>", "<NSLayoutConstraint:0x600000c7f340 UILabel:0x7f92e58102b0'Author'.height == 44 (active)>", "<NSLayoutConstraint:0x600000c7fa70 UISlider:0x7f92e58134b0.height == 34 (active)>", "<NSLayoutConstraint:0x600000c7f200 UILabel:0x7f92e580ffc0'Episode Title'.height >= 44 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c04410 'UISV-alignment' UIImageView:0x7f92e5812480.bottom == UISlider:0x7f92e58134b0.bottom (active)>", "<NSLayoutConstraint:0x600000c74be0 'UISV-alignment' UILabel:0x7f92e580f1c0'00:00'.bottom == UILabel:0x7f92e580f8b0'--:--'.bottom (active)>", "<NSLayoutConstraint:0x600000c74c80 'UISV-alignment' UILabel:0x7f92e580f1c0'00:00'.top == UILabel:0x7f92e580f8b0'--:--'.top (active)>", "<NSLayoutConstraint:0x600000c04500 'UISV-alignment' UIImageView:0x7f92e5812480.top == UISlider:0x7f92e58134b0.top (active)>", "<NSLayoutConstraint:0x600000c04370 'UISV-canvas-connection' UIStackView:0x7f92e5812280.top == UIImageView:0x7f92e5812480.top (active)>", "<NSLayoutConstraint:0x600000c74b40 'UISV-canvas-connection' UIStackView:0x7f92e580efc0.top == UILabel:0x7f92e580f1c0'00:00'.top (active)>", "<NSLayoutConstraint:0x600000c74b90 'UISV-canvas-connection' V:[UILabel:0x7f92e580f1c0'00:00']-(0)-| (active, names: '|':UIStackView:0x7f92e580efc0 )>", "<NSLayoutConstraint:0x600000c043c0 'UISV-canvas-connection' V:[UIImageView:0x7f92e5812480]-(0)-| (active, names: '|':UIStackView:0x7f92e5812280 )>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c7fa70 UISlider:0x7f92e58134b0.height == 34 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.340331+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c7d180 UISlider:0x7f92e5808da0.height == 66 (active)>", "<NSLayoutConstraint:0x600000c7ebc0 UIButton:0x7f92e580e2b0'Dismiss'.height == 70 (active)>", "<NSLayoutConstraint:0x600000c7efd0 UILabel:0x7f92e580f8b0'--:--'.height == 22 (active)>", "<NSLayoutConstraint:0x600000c7ed50 UIImageView:0x7f92e580e7c0.height == 180 (active)>", "<NSLayoutConstraint:0x600000c7f340 UILabel:0x7f92e58102b0'Author'.height == 44 (active)>", "<NSLayoutConstraint:0x600000c7f200 UILabel:0x7f92e580ffc0'Episode Title'.height >= 44 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c74be0 'UISV-alignment' UILabel:0x7f92e580f1c0'00:00'.bottom == UILabel:0x7f92e580f8b0'--:--'.bottom (active)>", "<NSLayoutConstraint:0x600000c74c80 'UISV-alignment' UILabel:0x7f92e580f1c0'00:00'.top == UILabel:0x7f92e580f8b0'--:--'.top (active)>", "<NSLayoutConstraint:0x600000c74b40 'UISV-canvas-connection' UIStackView:0x7f92e580efc0.top == UILabel:0x7f92e580f1c0'00:00'.top (active)>", "<NSLayoutConstraint:0x600000c74b90 'UISV-canvas-connection' V:[UILabel:0x7f92e580f1c0'00:00']-(0)-| (active, names: '|':UIStackView:0x7f92e580efc0 )>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c7efd0 UILabel:0x7f92e580f8b0'--:--'.height == 22 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.538360+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c7d180 UISlider:0x7f92e5808da0.height == 66 (active)>", "<NSLayoutConstraint:0x600000c7ebc0 UIButton:0x7f92e580e2b0'Dismiss'.height == 70 (active)>", "<NSLayoutConstraint:0x600000c7ed50 UIImageView:0x7f92e580e7c0.height == 180 (active)>", "<NSLayoutConstraint:0x600000c7f340 UILabel:0x7f92e58102b0'Author'.height == 44 (active)>", "<NSLayoutConstraint:0x600000c7f200 UILabel:0x7f92e580ffc0'Episode Title'.height >= 44 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7f0c0 UIStackView:0x7f92e580efc0.height == 22 (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c7f200 UILabel:0x7f92e580ffc0'Episode Title'.height >= 44 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.540139+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c7d180 UISlider:0x7f92e5808da0.height == 66 (active)>", "<NSLayoutConstraint:0x600000c7ebc0 UIButton:0x7f92e580e2b0'Dismiss'.height == 70 (active)>", "<NSLayoutConstraint:0x600000c7ed50 UIImageView:0x7f92e580e7c0.height == 180 (active)>", "<NSLayoutConstraint:0x600000c7f340 UILabel:0x7f92e58102b0'Author'.height == 44 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7f0c0 UIStackView:0x7f92e580efc0.height == 22 (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c7ed50 UIImageView:0x7f92e580e7c0.height == 180 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.545681+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c7d180 UISlider:0x7f92e5808da0.height == 66 (active)>", "<NSLayoutConstraint:0x600000c7ebc0 UIButton:0x7f92e580e2b0'Dismiss'.height == 70 (active)>", "<NSLayoutConstraint:0x600000c7f340 UILabel:0x7f92e58102b0'Author'.height == 44 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7f0c0 UIStackView:0x7f92e580efc0.height == 22 (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c7ebc0 UIButton:0x7f92e580e2b0'Dismiss'.height == 70 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.553344+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c7d180 UISlider:0x7f92e5808da0.height == 66 (active)>", "<NSLayoutConstraint:0x600000c7f340 UILabel:0x7f92e58102b0'Author'.height == 44 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7f0c0 UIStackView:0x7f92e580efc0.height == 22 (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c7d180 UISlider:0x7f92e5808da0.height == 66 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.557917+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c7f340 UILabel:0x7f92e58102b0'Author'.height == 44 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7f0c0 UIStackView:0x7f92e580efc0.height == 22 (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c7f340 UILabel:0x7f92e58102b0'Author'.height == 44 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.560337+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7f0c0 UIStackView:0x7f92e580efc0.height == 22 (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c7f0c0 UIStackView:0x7f92e580efc0.height == 22 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.590108+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c74be0 'UISV-alignment' UILabel:0x7f92e580f1c0'00:00'.bottom == UILabel:0x7f92e580f8b0'--:--'.bottom (active)>", "<NSLayoutConstraint:0x600000c74c80 'UISV-alignment' UILabel:0x7f92e580f1c0'00:00'.top == UILabel:0x7f92e580f8b0'--:--'.top (active)>", "<NSLayoutConstraint:0x600000c74b40 'UISV-canvas-connection' UIStackView:0x7f92e580efc0.top == UILabel:0x7f92e580f1c0'00:00'.top (active)>", "<NSLayoutConstraint:0x600000c74b90 'UISV-canvas-connection' V:[UILabel:0x7f92e580f1c0'00:00']-(0)-| (active, names: '|':UIStackView:0x7f92e580efc0 )>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c74be0 'UISV-alignment' UILabel:0x7f92e580f1c0'00:00'.bottom == UILabel:0x7f92e580f8b0'--:--'.bottom (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.592073+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c74b40 'UISV-canvas-connection' UIStackView:0x7f92e580efc0.top == UILabel:0x7f92e580f1c0'00:00'.top (active)>", "<NSLayoutConstraint:0x600000c74b90 'UISV-canvas-connection' V:[UILabel:0x7f92e580f1c0'00:00']-(0)-| (active, names: '|':UIStackView:0x7f92e580efc0 )>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c74b40 'UISV-canvas-connection' UIStackView:0x7f92e580efc0.top == UILabel:0x7f92e580f1c0'00:00'.top (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.593400+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c04550 'UISV-canvas-connection' UIStackView:0x7f92e580e0b0.top == UIButton:0x7f92e580e2b0'Dismiss'.top (active)>", "<NSLayoutConstraint:0x600000c045a0 'UISV-canvas-connection' V:[UIStackView:0x7f92e5812280]-(0)-| (active, names: '|':UIStackView:0x7f92e580e0b0 )>", "<NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)>", "<NSLayoutConstraint:0x600000c04640 'UISV-spacing' V:[UIButton:0x7f92e580e2b0'Dismiss']-(5)-[UIImageView:0x7f92e580e7c0] (active)>", "<NSLayoutConstraint:0x600000c04690 'UISV-spacing' V:[UIImageView:0x7f92e580e7c0]-(5)-[UISlider:0x7f92e5808da0] (active)>", "<NSLayoutConstraint:0x600000c046e0 'UISV-spacing' V:[UISlider:0x7f92e5808da0]-(5)-[UIStackView:0x7f92e580efc0] (active)>", "<NSLayoutConstraint:0x600000c04730 'UISV-spacing' V:[UIStackView:0x7f92e580efc0]-(5)-[UILabel:0x7f92e580ffc0'Episode Title'] (active)>", "<NSLayoutConstraint:0x600000c04780 'UISV-spacing' V:[UILabel:0x7f92e580ffc0'Episode Title']-(5)-[UILabel:0x7f92e58102b0'Author'] (active)>", "<NSLayoutConstraint:0x600000c04820 'UISV-spacing' V:[UILabel:0x7f92e58102b0'Author']-(5)-[UIStackView:0x7f92e58105a0] (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c04870 'UISV-spacing' V:[UIStackView:0x7f92e58105a0]-(5)-[UIStackView:0x7f92e5812280] (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:49.594492+0300 audisto[9739:818041] [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:0x600000c7a8f0 h=-&- v=-&- UILayoutContainerView:0x7f92e580b3a0.height == UIWindow:0x7f92e2f11100.height (active)>", "<NSAutoresizingMaskLayoutConstraint:0x600000c7b340 h=--- v=--- UIWindow:0x7f92e2f11100.height == 896 (active)>", "<NSLayoutConstraint:0x600000c77660 UIStackView:0x7f92e580e0b0.top == UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.top (active)>", "<NSLayoutConstraint:0x600000c7b070 V:|-(896)-[audisto.PlayerDetailsView:0x7f92e580a200] (active, names: '|':UILayoutContainerView:0x7f92e580b3a0 )>", "<NSLayoutConstraint:0x600000c7b160 audisto.PlayerDetailsView:0x7f92e580a200.bottom == UILayoutContainerView:0x7f92e580b3a0.bottom (active)>", "<NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)>", "<NSLayoutConstraint:0x600000c7fe80 'UIViewSafeAreaLayoutGuide-bottom' V:[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide']-(0)-| (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>", "<NSLayoutConstraint:0x600000c7fde0 'UIViewSafeAreaLayoutGuide-top' V:|-(0)-[UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'] (active, names: '|':audisto.PlayerDetailsView:0x7f92e580a200 )>" ) Will attempt to recover by breaking constraint <NSLayoutConstraint:0x600000c7ff20 UILayoutGuide:0x60000165c460'UIViewSafeAreaLayoutGuide'.bottom == UIStackView:0x7f92e580e0b0.bottom + 24 (active)> Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger. The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful. 2019-04-07 12:13:55.901222+0300 audisto[9739:818160] Task <42000FE7-53FC-48C2-A9A4-4EE6403B89FB>.<2> load failed with error Error Domain=NSURLErrorDomain Code=-999 "cancelled" UserInfo={NSErrorFailingURLStringKey=https://s3-us-west-2.amazonaws.com/audisto-bucket/1553938509459_KBR20NnotF_1553938484183.mp3, NSErrorFailingURLKey=https://s3-us-west-2.amazonaws.com/audisto-bucket/1553938509459_KBR20NnotF_1553938484183.mp3, _NSURLErrorRelatedURLSessionTaskErrorKey=( "LocalDataTask <42000FE7-53FC-48C2-A9A4-4EE6403B89FB>.<2>" ), _NSURLErrorFailingURLSessionTaskErrorKey=LocalDataTask <42000FE7-53FC-48C2-A9A4-4EE6403B89FB>.<2>, NSLocalizedDescription=cancelled} [-999] 2019-04-07 12:13:55.910014+0300 audisto[9739:818126] Task <42000FE7-53FC-48C2-A9A4-4EE6403B89FB>.<2> finished with error - code: -999 2019-04-07 12:13:55.910894+0300 audisto[9739:818091] TIC Read Status [2:0x0]: 1:57 2019-04-07 12:14:24.148032+0300 audisto[9739:818041] -[audisto.PlayerDetailsView miniPlayPauseButton:]: unrecognized selector sent to instance 0x7f92e580a200 2019-04-07 12:14:24.158303+0300 audisto[9739:818041] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[audisto.PlayerDetailsView miniPlayPauseButton:]: unrecognized selector sent to instance 0x7f92e580a200' *** First throw call stack: ( 0 CoreFoundation 0x000000010c4ea6fb __exceptionPreprocess + 331 1 libobjc.A.dylib 0x0000000109eabac5 objc_exception_throw + 48 2 CoreFoundation 0x000000010c508ab4 -[NSObject(NSObject) doesNotRecognizeSelector:] + 132 3 UIKitCore 0x000000011074ec3d -[UIResponder doesNotRecognizeSelector:] + 287 4 CoreFoundation 0x000000010c4ef443 ___forwarding___ + 1443 5 CoreFoundation 0x000000010c4f1238 _CF_forwarding_prep_0 + 120 6 UIKitCore 0x0000000110724204 -[UIApplication sendAction:to:from:forEvent:] + 83 7 UIKitCore 0x0000000110179c19 -[UIControl sendAction:to:forEvent:] + 67 8 UIKitCore 0x0000000110179f36 -[UIControl _sendActionsForEvents:withEvent:] + 450 9 UIKitCore 0x0000000110178eec -[UIControl touchesEnded:withEvent:] + 583 10 UIKitCore 0x000000011075ceee -[UIWindow _sendTouchesForEvent:] + 2547 11 UIKitCore 0x000000011075e5d2 -[UIWindow sendEvent:] + 4079 12 UIKitCore 0x000000011073cd16 -[UIApplication sendEvent:] + 356 13 UIKitCore 0x000000011080d293 __dispatchPreprocessedEventFromEventQueue + 3232 14 UIKitCore 0x000000011080fbb9 __handleEventQueueInternal + 5911 15 CoreFoundation 0x000000010c451be1 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17 16 CoreFoundation 0x000000010c451463 __CFRunLoopDoSources0 + 243 17 CoreFoundation 0x000000010c44bb1f __CFRunLoopRun + 1231 18 CoreFoundation 0x000000010c44b302 CFRunLoopRunSpecific + 626 19 GraphicsServices 0x0000000113bae2fe GSEventRunModal + 65 20 UIKitCore 0x0000000110722ba2 UIApplicationMain + 140 21 audisto 0x0000000108fe19eb main + 75 22 libdyld.dylib 0x000000010deff541 start + 1 23 ??? 0x0000000000000001 0x0 + 1 ) libc++abi.dylib: terminating with uncaught exception of type NSException (lldb)
shender ramos
4 years ago
another great video man.. i keep doing everything programmatically.... so i had to kinda figure out in the stack view to change the height of the buttons
azemii
4 years ago
Hi Brian, It feels a lot harder and awkward to implement the miniplayer programmatically since the PlayerDetailsView is not. And the thing that we are creating UIView classes and not controllers is a bit tricky since we don't have a viewDidLoad to execute some code etc. Is this just me or is it a lot harder to combine code when some is done in storyboard and other views are programmatically? Best regards
Brian Voong
4 years ago
jmamuric
4 years ago
Do you have any tips or for adjusting the table view when the Mini Player View appears? Stack overflow is failing me.
HELP & SUPPORT