Releases: SRGSSR/srgmediaplayer-apple
Control fixes
- The
SRGTimeSlider
borderColor
property has been removed, as having a border color was never really useful (sliders with a border color were ultimately ugly). All tracks (elapsed time, remaining time and buffer) are now drawn equally thick and with pixel-perfect precision. The track thickness can be controlled with the newtrackThickness
property. - The intrinsic content size of all controls is now correct.
- When entering picture in picture, the picture in picture button does not toggle erratically between states anymore.
Intrinsic content size fixes
- The intrinsic content size of overlay views has been fixed.
Maintenance release
This version modernises the project with Xcode 9.3.
Image customization fixes
-
Custom control images could previously be directly set in Interface Builder for properties marked with the
IBInspectable
attribute. Support for inspectable image properties (and more widely for user-defined image runtime attributes) was recently discovered to be buggy, though. When setting images through inspectable properties or user-defined runtime attributes, this problem can lead to incorrect image sizes, broken Interface Builder previews and constraint issues at runtime.Inspectable attributes have therefore been dropped for all SRG Media Player controls until this issue has been fixed by Apple. This includes
SRGAirplayButton
,SRGPictureInPictureButton
,SRGPlaybackButton
,SRGTracksButton
andSRGViewModeButton
.Existing applications which were setting image properties in code will continue to work, but should now set images in code for reliable behavior. We recommend you update your codebase as follows:
- Open xibs or storyboards containing a control for which an image was set in Interface Builder (see above list).
- Open the 3rd tab (identity inspector) of the utility panel (⌥⌘0) and look at image-related user-defined runtime attributes.
- Set these image properties directly in your implementation file (you might need to bind a related outlet if you did not have one).
- In Interface Builder, clear these user-defined runtime attributes.
-
The time slider class provided the
valueString
andtimeLeftValueString
properties, which were misleading and not really useful. -
New methods have been added to the
SRGTimeSliderDelegate
protocol to let you fully customize how current and remaining times are displayed (as well as the underlying accessibility labels if needed): -
On iOS 11, seeking to the end of a media does not leave the player in an inconsistent state anymore.
Segment transition fix
- When updating the list of segments attached to a controller, segment transitions are correctly inhibited in the case where a segment is replaced with an equivalent one.
Maintenance release
- The stream type is now correctly reported as
SRGMediaPlayerStreamTypeUnknown
when preparing to play a media (it was previously incorrectly reported asSRGMediaPlayerStreamTypeLive
). - The 360° playback view is now correctly hidden when casting with AirPlay.
- The 360° default icon has been updated.
360° video support
Support for 360° video playback has been added. The SRGMediaPlayerView
class now has an additional viewMode
property, which lets you choose how a media should be rendered:
- Flat: Normal playback.
- Monoscopic: 360° full-frame video playback.
- Stereoscopic: 360° split-frame video playback for use with headsets.
A new SRGViewModeButton
overlay button has been added as well to automatically provide users with a quick way to switch between supported modes.
360° content navigation responds both to device motions as well as pan gestures. If your application currently uses no Core Motion tracker, SRG Media Player will silently instantiate one for you. If your application readily uses a Core Motion tracker, use the new -[SRGMediaPlayerView setMotionManager:]
method to use it for 360° video navigation as well.
Segments / user info updates during playback and iPhone X support
This releases makes it possible to update segment and user info during playback. Previously, this information could only be provided when starting playback. Simply set the segments
or userInfo
properties with the updated values when appropriate.
SRGMediaPlayerViewController
was also updated for iPhone X compatibility. Its layout is now inspired by AVPlayerViewController
layout, though not meant to be a pixel-perfect alternative at the moment.
Maintenance release
- The current time can now be obtained from the controller. Accessing the underlying
AVPlayer
is not required anymore. - Minor internal improvements.
Audio playback startup improvements
- Fixed slow playback startup for audios served over HTTP (on iOS 10).
- The media player controller now broadcasts richer information in notifications, see
SRGMediaPlayerConstants.h
. - Improved AirPlay button reliability.
- Added
bufferingTrackColor
property to set the buffering slider track color independently of its border color. - Added
seekStartTime
andseekTargetTime
media player controller properties. - Improved media player view controller user interface behavior.