diff --git a/Example/ContainerControllerSwift.xcodeproj/project.pbxproj b/Example/ContainerControllerSwift.xcodeproj/project.pbxproj index 0f92c8a..56469c7 100644 --- a/Example/ContainerControllerSwift.xcodeproj/project.pbxproj +++ b/Example/ContainerControllerSwift.xcodeproj/project.pbxproj @@ -120,6 +120,14 @@ 4A08A3032C3C205F00DE9D3E /* WalletsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A08A2FB2C3C205F00DE9D3E /* WalletsViewController.swift */; }; 4A15C9AB2C47A89E00D8F733 /* SportGradientBackgroundView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A15C9A82C47A89E00D8F733 /* SportGradientBackgroundView.swift */; }; 4A15C9AC2C47A89E00D8F733 /* SportGradientBackgroundView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4A15C9A92C47A89E00D8F733 /* SportGradientBackgroundView.xib */; }; + 4A2067252C5A3F64001188E7 /* CamelPhat_DropIt.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A2067242C5A3F64001188E7 /* CamelPhat_DropIt.mp3 */; }; + 4A2067322C5A4226001188E7 /* funky_house_classic.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A2067262C5A4224001188E7 /* funky_house_classic.mp3 */; }; + 4A2067372C5A4226001188E7 /* big_miz_aador.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A20672B2C5A4225001188E7 /* big_miz_aador.mp3 */; }; + 4A2067382C5A4226001188E7 /* claptone_music_got_me.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A20672C2C5A4225001188E7 /* claptone_music_got_me.mp3 */; }; + 4A2067392C5A4226001188E7 /* the_audio_bar.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A20672D2C5A4225001188E7 /* the_audio_bar.mp3 */; }; + 4A20673A2C5A4226001188E7 /* benno_blome_botha.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A20672E2C5A4225001188E7 /* benno_blome_botha.mp3 */; }; + 4A20673C2C5A4226001188E7 /* myselor_neurolife.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A2067302C5A4225001188E7 /* myselor_neurolife.mp3 */; }; + 4A20673F2C5A477E001188E7 /* TimerUtils.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A20673E2C5A477E001188E7 /* TimerUtils.swift */; }; 4A3AA7482C4F240900438BC5 /* MyCardsCollAddonsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A3AA73C2C4F240800438BC5 /* MyCardsCollAddonsCell.swift */; }; 4A3AA7492C4F240900438BC5 /* MyCardsCollAddonsCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4A3AA73D2C4F240800438BC5 /* MyCardsCollAddonsCell.xib */; }; 4A3AA74A2C4F240900438BC5 /* MyCardsTitileCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A3AA73F2C4F240900438BC5 /* MyCardsTitileCell.swift */; }; @@ -140,6 +148,11 @@ 4A4247782C4F09D200FF11DC /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 4A4247712C4F09D200FF11DC /* README.md */; }; 4A42A6DE2C4E610500E78833 /* MapParkingTgCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A42A6DB2C4E610500E78833 /* MapParkingTgCell.swift */; }; 4A42A6DF2C4E610500E78833 /* MapParkingTgCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4A42A6DC2C4E610500E78833 /* MapParkingTgCell.xib */; }; + 4A4660962C5A328100AD2BD6 /* ViewCallsPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A4660952C5A328100AD2BD6 /* ViewCallsPlayer.swift */; }; + 4A46609B2C5A336900AD2BD6 /* Disclosure_You_Me.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A4660972C5A336900AD2BD6 /* Disclosure_You_Me.mp3 */; }; + 4A46609C2C5A336900AD2BD6 /* Disclosure_Ware_Running.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A4660982C5A336900AD2BD6 /* Disclosure_Ware_Running.mp3 */; }; + 4A46609D2C5A336900AD2BD6 /* Flume_Greatest_View.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A4660992C5A336900AD2BD6 /* Flume_Greatest_View.mp3 */; }; + 4A46609E2C5A336900AD2BD6 /* Flume_Sleepless.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 4A46609A2C5A336900AD2BD6 /* Flume_Sleepless.mp3 */; }; 4A7164152C4F628D007C88BD /* CustomCardGradientMainView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A7164082C4F628D007C88BD /* CustomCardGradientMainView.swift */; }; 4A7164162C4F628D007C88BD /* CustomCardGradientMainView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4A7164092C4F628D007C88BD /* CustomCardGradientMainView.xib */; }; 4A7164172C4F628D007C88BD /* CustomCardHeaderMiniView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A71640B2C4F628D007C88BD /* CustomCardHeaderMiniView.swift */; }; @@ -186,6 +199,8 @@ 4A7E6D742C4E505D00F36CD3 /* MapParkingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A7E6D6C2C4E505D00F36CD3 /* MapParkingViewController.swift */; }; 4A7E6D782C4E588A00F36CD3 /* MapParkingHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A7E6D752C4E588A00F36CD3 /* MapParkingHeaderView.swift */; }; 4A7E6D792C4E588A00F36CD3 /* MapParkingHeaderView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4A7E6D762C4E588A00F36CD3 /* MapParkingHeaderView.xib */; }; + 4AA93AA02C59EC9400F99845 /* PlayMusicItGribView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AA93A9D2C59EC9400F99845 /* PlayMusicItGribView.swift */; }; + 4AA93AA12C59EC9400F99845 /* PlayMusicItGribView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4AA93A9E2C59EC9400F99845 /* PlayMusicItGribView.xib */; }; 4AAE16D12C4626F900855BD9 /* TaxiViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4AAE16B92C4626F900855BD9 /* TaxiViewController.storyboard */; }; 4AAE16D22C4626F900855BD9 /* TaxiViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AAE16BA2C4626F900855BD9 /* TaxiViewController.swift */; }; 4AAE16DB2C4626F900855BD9 /* TaxiMapButtonView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AAE16C82C4626F900855BD9 /* TaxiMapButtonView.swift */; }; @@ -221,10 +236,10 @@ 4AB6DE9B2C3BF7DC004A8866 /* DesignView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AB6DE982C3BF7DC004A8866 /* DesignView.swift */; }; 4ACA328D2C465687009EF3ED /* TaxiDetailsCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ACA328A2C465687009EF3ED /* TaxiDetailsCell.swift */; }; 4ACA328E2C465687009EF3ED /* TaxiDetailsCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4ACA328B2C465687009EF3ED /* TaxiDetailsCell.xib */; }; + 4AD19A572C5A08080071AC96 /* PlayMusicItGradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AD19A542C5A08080071AC96 /* PlayMusicItGradientView.swift */; }; + 4AD19A582C5A08080071AC96 /* PlayMusicItGradientView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4AD19A552C5A08080071AC96 /* PlayMusicItGradientView.xib */; }; 4AD5A0CD2C59CF5B009B8C48 /* PlayMusicItCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AD5A0CA2C59CF5B009B8C48 /* PlayMusicItCell.swift */; }; 4AD5A0CE2C59CF5B009B8C48 /* PlayMusicItCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4AD5A0CB2C59CF5B009B8C48 /* PlayMusicItCell.xib */; }; - 4AD5A0D52C59CF64009B8C48 /* PlayMusicItGribView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AD5A0CF2C59CF64009B8C48 /* PlayMusicItGribView.swift */; }; - 4AD5A0D62C59CF64009B8C48 /* PlayMusicItGribView.xib in Resources */ = {isa = PBXBuildFile; fileRef = 4AD5A0D02C59CF64009B8C48 /* PlayMusicItGribView.xib */; }; 4AD5A0D72C59CF64009B8C48 /* PlayMusicViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4AD5A0D22C59CF64009B8C48 /* PlayMusicViewController.storyboard */; }; 4AD5A0D82C59CF64009B8C48 /* PlayMusicViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AD5A0D32C59CF64009B8C48 /* PlayMusicViewController.swift */; }; 4ADE43A32C3C6AE6002FDEB8 /* PlaylistViewController.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 4ADE43912C3C6AE6002FDEB8 /* PlaylistViewController.storyboard */; }; @@ -406,6 +421,14 @@ 4A08A2FB2C3C205F00DE9D3E /* WalletsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = WalletsViewController.swift; sourceTree = ""; }; 4A15C9A82C47A89E00D8F733 /* SportGradientBackgroundView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SportGradientBackgroundView.swift; sourceTree = ""; }; 4A15C9A92C47A89E00D8F733 /* SportGradientBackgroundView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SportGradientBackgroundView.xib; sourceTree = ""; }; + 4A2067242C5A3F64001188E7 /* CamelPhat_DropIt.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = CamelPhat_DropIt.mp3; sourceTree = ""; }; + 4A2067262C5A4224001188E7 /* funky_house_classic.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = funky_house_classic.mp3; sourceTree = ""; }; + 4A20672B2C5A4225001188E7 /* big_miz_aador.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = big_miz_aador.mp3; sourceTree = ""; }; + 4A20672C2C5A4225001188E7 /* claptone_music_got_me.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = claptone_music_got_me.mp3; sourceTree = ""; }; + 4A20672D2C5A4225001188E7 /* the_audio_bar.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = the_audio_bar.mp3; sourceTree = ""; }; + 4A20672E2C5A4225001188E7 /* benno_blome_botha.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = benno_blome_botha.mp3; sourceTree = ""; }; + 4A2067302C5A4225001188E7 /* myselor_neurolife.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = myselor_neurolife.mp3; sourceTree = ""; }; + 4A20673E2C5A477E001188E7 /* TimerUtils.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TimerUtils.swift; sourceTree = ""; }; 4A3AA73C2C4F240800438BC5 /* MyCardsCollAddonsCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyCardsCollAddonsCell.swift; sourceTree = ""; }; 4A3AA73D2C4F240800438BC5 /* MyCardsCollAddonsCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MyCardsCollAddonsCell.xib; sourceTree = ""; }; 4A3AA73F2C4F240900438BC5 /* MyCardsTitileCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MyCardsTitileCell.swift; sourceTree = ""; }; @@ -429,6 +452,11 @@ 4A42477A2C4F0E0A00FF11DC /* ContainerController-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "ContainerController-Bridging-Header.h"; sourceTree = SOURCE_ROOT; }; 4A42A6DB2C4E610500E78833 /* MapParkingTgCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapParkingTgCell.swift; sourceTree = ""; }; 4A42A6DC2C4E610500E78833 /* MapParkingTgCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapParkingTgCell.xib; sourceTree = ""; }; + 4A4660952C5A328100AD2BD6 /* ViewCallsPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ViewCallsPlayer.swift; sourceTree = ""; }; + 4A4660972C5A336900AD2BD6 /* Disclosure_You_Me.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = Disclosure_You_Me.mp3; sourceTree = ""; }; + 4A4660982C5A336900AD2BD6 /* Disclosure_Ware_Running.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = Disclosure_Ware_Running.mp3; sourceTree = ""; }; + 4A4660992C5A336900AD2BD6 /* Flume_Greatest_View.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = Flume_Greatest_View.mp3; sourceTree = ""; }; + 4A46609A2C5A336900AD2BD6 /* Flume_Sleepless.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = Flume_Sleepless.mp3; sourceTree = ""; }; 4A7164082C4F628D007C88BD /* CustomCardGradientMainView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomCardGradientMainView.swift; sourceTree = ""; }; 4A7164092C4F628D007C88BD /* CustomCardGradientMainView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CustomCardGradientMainView.xib; sourceTree = ""; }; 4A71640B2C4F628D007C88BD /* CustomCardHeaderMiniView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomCardHeaderMiniView.swift; sourceTree = ""; }; @@ -475,6 +503,8 @@ 4A7E6D6C2C4E505D00F36CD3 /* MapParkingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapParkingViewController.swift; sourceTree = ""; }; 4A7E6D752C4E588A00F36CD3 /* MapParkingHeaderView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MapParkingHeaderView.swift; sourceTree = ""; }; 4A7E6D762C4E588A00F36CD3 /* MapParkingHeaderView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MapParkingHeaderView.xib; sourceTree = ""; }; + 4AA93A9D2C59EC9400F99845 /* PlayMusicItGribView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayMusicItGribView.swift; sourceTree = ""; }; + 4AA93A9E2C59EC9400F99845 /* PlayMusicItGribView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PlayMusicItGribView.xib; sourceTree = ""; }; 4AAE16B92C4626F900855BD9 /* TaxiViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = TaxiViewController.storyboard; sourceTree = ""; }; 4AAE16BA2C4626F900855BD9 /* TaxiViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TaxiViewController.swift; sourceTree = ""; }; 4AAE16C82C4626F900855BD9 /* TaxiMapButtonView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TaxiMapButtonView.swift; sourceTree = ""; }; @@ -510,10 +540,10 @@ 4AB6DE982C3BF7DC004A8866 /* DesignView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DesignView.swift; sourceTree = ""; }; 4ACA328A2C465687009EF3ED /* TaxiDetailsCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TaxiDetailsCell.swift; sourceTree = ""; }; 4ACA328B2C465687009EF3ED /* TaxiDetailsCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = TaxiDetailsCell.xib; sourceTree = ""; }; + 4AD19A542C5A08080071AC96 /* PlayMusicItGradientView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayMusicItGradientView.swift; sourceTree = ""; }; + 4AD19A552C5A08080071AC96 /* PlayMusicItGradientView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PlayMusicItGradientView.xib; sourceTree = ""; }; 4AD5A0CA2C59CF5B009B8C48 /* PlayMusicItCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayMusicItCell.swift; sourceTree = ""; }; 4AD5A0CB2C59CF5B009B8C48 /* PlayMusicItCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PlayMusicItCell.xib; sourceTree = ""; }; - 4AD5A0CF2C59CF64009B8C48 /* PlayMusicItGribView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayMusicItGribView.swift; sourceTree = ""; }; - 4AD5A0D02C59CF64009B8C48 /* PlayMusicItGribView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PlayMusicItGribView.xib; sourceTree = ""; }; 4AD5A0D22C59CF64009B8C48 /* PlayMusicViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = PlayMusicViewController.storyboard; sourceTree = ""; }; 4AD5A0D32C59CF64009B8C48 /* PlayMusicViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlayMusicViewController.swift; sourceTree = ""; }; 4ADE43912C3C6AE6002FDEB8 /* PlaylistViewController.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = PlaylistViewController.storyboard; sourceTree = ""; }; @@ -617,6 +647,7 @@ 46ACEFD62490F52500FAAD43 /* Framework */ = { isa = PBXGroup; children = ( + 4A4247722C4F09D200FF11DC /* Blurberry */, 4AB6DE992C3BF7DC004A8866 /* DesignableViews */, 4AB6DE402C3BF2F2004A8866 /* DeviceSize */, 4AB6DE382C3BF08B004A8866 /* ButtonTapAnimations */, @@ -1446,9 +1477,6 @@ 4A7164142C4F628D007C88BD /* CustomCard */ = { isa = PBXGroup; children = ( - 4AD5A0D12C59CF64009B8C48 /* PlayMusicItGribView */, - 4AD5A0D42C59CF64009B8C48 /* PlayMusicViewController */, - 4AD5A0CC2C59CF5B009B8C48 /* PlayMusicItCell */, 4A7164242C4F7E7C007C88BD /* CustomCardView */, 4A71641F2C4F7139007C88BD /* CustomCardHeaderMainView */, 4A71640A2C4F628D007C88BD /* CustomCardGradientMainView */, @@ -1674,6 +1702,15 @@ path = MapParkingHeaderView; sourceTree = ""; }; + 4AA93A9F2C59EC9400F99845 /* PlayMusicItGribView */ = { + isa = PBXGroup; + children = ( + 4AA93A9D2C59EC9400F99845 /* PlayMusicItGribView.swift */, + 4AA93A9E2C59EC9400F99845 /* PlayMusicItGribView.xib */, + ); + path = PlayMusicItGribView; + sourceTree = ""; + }; 4AAE16A82C46213000855BD9 /* Taxi */ = { isa = PBXGroup; children = ( @@ -1826,24 +1863,48 @@ path = TaxiDetailsCell; sourceTree = ""; }; + 4AD19A562C5A08080071AC96 /* PlayMusicItGradientView */ = { + isa = PBXGroup; + children = ( + 4AD19A542C5A08080071AC96 /* PlayMusicItGradientView.swift */, + 4AD19A552C5A08080071AC96 /* PlayMusicItGradientView.xib */, + ); + path = PlayMusicItGradientView; + sourceTree = ""; + }; + 4AD19A592C5A17D50071AC96 /* PlayMusic */ = { + isa = PBXGroup; + children = ( + 4A20673E2C5A477E001188E7 /* TimerUtils.swift */, + 4A20672E2C5A4225001188E7 /* benno_blome_botha.mp3 */, + 4A20672B2C5A4225001188E7 /* big_miz_aador.mp3 */, + 4A20672C2C5A4225001188E7 /* claptone_music_got_me.mp3 */, + 4A2067262C5A4224001188E7 /* funky_house_classic.mp3 */, + 4A2067302C5A4225001188E7 /* myselor_neurolife.mp3 */, + 4A20672D2C5A4225001188E7 /* the_audio_bar.mp3 */, + 4A4660982C5A336900AD2BD6 /* Disclosure_Ware_Running.mp3 */, + 4A4660972C5A336900AD2BD6 /* Disclosure_You_Me.mp3 */, + 4A4660992C5A336900AD2BD6 /* Flume_Greatest_View.mp3 */, + 4A2067242C5A3F64001188E7 /* CamelPhat_DropIt.mp3 */, + 4A46609A2C5A336900AD2BD6 /* Flume_Sleepless.mp3 */, + 4A4660952C5A328100AD2BD6 /* ViewCallsPlayer.swift */, + 4AD19A562C5A08080071AC96 /* PlayMusicItGradientView */, + 4AA93A9F2C59EC9400F99845 /* PlayMusicItGribView */, + 4AD5A0CC2C59CF5B009B8C48 /* PlayMusicItCell */, + 4AD5A0D42C59CF64009B8C48 /* PlayMusicViewController */, + ); + path = PlayMusic; + sourceTree = ""; + }; 4AD5A0CC2C59CF5B009B8C48 /* PlayMusicItCell */ = { isa = PBXGroup; children = ( - 4AD5A0CA2C59CF5B009B8C48 /* PlayMusicItCell.swift */, 4AD5A0CB2C59CF5B009B8C48 /* PlayMusicItCell.xib */, + 4AD5A0CA2C59CF5B009B8C48 /* PlayMusicItCell.swift */, ); path = PlayMusicItCell; sourceTree = ""; }; - 4AD5A0D12C59CF64009B8C48 /* PlayMusicItGribView */ = { - isa = PBXGroup; - children = ( - 4AD5A0CF2C59CF64009B8C48 /* PlayMusicItGribView.swift */, - 4AD5A0D02C59CF64009B8C48 /* PlayMusicItGribView.xib */, - ); - path = PlayMusicItGribView; - sourceTree = ""; - }; 4AD5A0D42C59CF64009B8C48 /* PlayMusicViewController */ = { isa = PBXGroup; children = ( @@ -1956,7 +2017,6 @@ 4A3AA73E2C4F240800438BC5 /* MyCardsCollAddonsCell */, 4A3AA7442C4F240900438BC5 /* MyCardsCollectionCell */, 4A3AA7412C4F240900438BC5 /* MyCardsTitileCell */, - 4A4247722C4F09D200FF11DC /* Blurberry */, 4ADEF3592C4EFE2500BE8B83 /* BuyStockTitleGreenCell */, 4ADEF3522C4ED4FB00BE8B83 /* BuyStockTitleCell */, 4ADEF34D2C4ED46600BE8B83 /* BuyStockOneCell */, @@ -2154,6 +2214,7 @@ 607FACD21AFB9204008FA782 /* Example */ = { isa = PBXGroup; children = ( + 4AD19A592C5A17D50071AC96 /* PlayMusic */, 4A7164142C4F628D007C88BD /* CustomCard */, 4ADEF3402C4ED35600BE8B83 /* BuyStock */, 4A7E6D6E2C4E505D00F36CD3 /* MapParking */, @@ -2278,9 +2339,13 @@ 4ACA328E2C465687009EF3ED /* TaxiDetailsCell.xib in Resources */, 4A78E93A2C3C02BB00DE60F5 /* ImagineSmallTagCell.xib in Resources */, 46ACF05B2490F52600FAAD43 /* Localizable.strings in Resources */, + 4AD19A582C5A08080071AC96 /* PlayMusicItGradientView.xib in Resources */, + 4A2067322C5A4226001188E7 /* funky_house_classic.mp3 in Resources */, 4AF032532C4762C6002DCC7D /* SportTagSizeColorCell.xib in Resources */, 4A08A3012C3C205F00DE9D3E /* WalletsTitleCell.xib in Resources */, + 4A2067382C5A4226001188E7 /* claptone_music_got_me.mp3 in Resources */, 4AAE16F52C462BCB00855BD9 /* TaxiButtonBottomCell.xib in Resources */, + 4A2067392C5A4226001188E7 /* the_audio_bar.mp3 in Resources */, 4AF0325F2C4762C6002DCC7D /* SportCatalogAllCell.xib in Resources */, 4A7164182C4F628D007C88BD /* CustomCardHeaderMiniView.xib in Resources */, 4AAE16F72C462BCB00855BD9 /* TaxiCarTagCell.xib in Resources */, @@ -2289,6 +2354,7 @@ 4ADEF3422C4ED35600BE8B83 /* BuyStockGraphCell.xib in Resources */, 46ACF0662490F52600FAAD43 /* MapsLocationCell.xib in Resources */, 4A78E92A2C3C02BB00DE60F5 /* ImagineButtonCell.xib in Resources */, + 4A20673A2C5A4226001188E7 /* benno_blome_botha.mp3 in Resources */, 46ACF05C2490F52600FAAD43 /* InfoPlist.strings in Resources */, 46ACF07C2490F52600FAAD43 /* MapsMenuTextCell.xib in Resources */, 46ACF0C92490FEB300FAAD43 /* ExampleSwitchCell.xib in Resources */, @@ -2310,6 +2376,8 @@ 46ACF06A2490F52600FAAD43 /* MapsRouteCell.xib in Resources */, 46ACF0CD2490FEB300FAAD43 /* ExampleSliderCell.xib in Resources */, 4A7DF7ED2C470EAF002E2468 /* TaxiRateTgCell.xib in Resources */, + 4A20673C2C5A4226001188E7 /* myselor_neurolife.mp3 in Resources */, + 4A46609B2C5A336900AD2BD6 /* Disclosure_You_Me.mp3 in Resources */, 4A7E6D722C4E505D00F36CD3 /* MapParkingMiniCell.xib in Resources */, 4AF032572C4762C6002DCC7D /* SportTagFilterCell.xib in Resources */, 4AF032552C4762C6002DCC7D /* SportCatalogCell.xib in Resources */, @@ -2324,6 +2392,7 @@ 4AAE16F32C462BCB00855BD9 /* TaxiVisaCardCell.xib in Resources */, 46ACF08A2490F52600FAAD43 /* MapsWeatherView.xib in Resources */, 607FACE01AFB9204008FA782 /* LaunchScreen.xib in Resources */, + 4A46609E2C5A336900AD2BD6 /* Flume_Sleepless.mp3 in Resources */, 46ACF0742490F52600FAAD43 /* LocationTextCell.xib in Resources */, 4ADEF35B2C4EFE2500BE8B83 /* BuyStockTitleGreenCell.xib in Resources */, 4A7DF7FE2C471B00002E2468 /* TaxiRateTitleCell.xib in Resources */, @@ -2333,7 +2402,6 @@ 46ACF07F2490F52600FAAD43 /* HeaderDetailsView.xib in Resources */, 46ACF0E3249255ED00FAAD43 /* ExampleAddCollectionViewController.storyboard in Resources */, 4A7E6D792C4E588A00F36CD3 /* MapParkingHeaderView.xib in Resources */, - 4AD5A0D62C59CF64009B8C48 /* PlayMusicItGribView.xib in Resources */, 46ACF0812490F52600FAAD43 /* HeaderSearchBarView.xib in Resources */, 4A71641A2C4F628D007C88BD /* CustomCardHeaderView.xib in Resources */, 607FACDD1AFB9204008FA782 /* Images.xcassets in Resources */, @@ -2343,7 +2411,9 @@ 46ACF0C32490FEB300FAAD43 /* ExampleCollectionCell.xib in Resources */, 4ADE43A62C3C6AE7002FDEB8 /* PlaylistOneCell.xib in Resources */, 46ACF0D22490FEB300FAAD43 /* ExampleHeaderGripView.xib in Resources */, + 4A2067252C5A3F64001188E7 /* CamelPhat_DropIt.mp3 in Resources */, 4AF0322D2C475536002DCC7D /* SportTitleCell.xib in Resources */, + 4A46609D2C5A336900AD2BD6 /* Flume_Greatest_View.mp3 in Resources */, 4AAE16DC2C4626F900855BD9 /* TaxiMapButtonView.xib in Resources */, 4AAE16F92C462BCB00855BD9 /* TaxiCollectionCarsCell.xib in Resources */, 46ACF0722490F52600FAAD43 /* LocationButtonCell.xib in Resources */, @@ -2356,13 +2426,16 @@ 46ACF0C72490FEB300FAAD43 /* ExampleSegmentCell.xib in Resources */, 4A7DF7EB2C470EAF002E2468 /* TaxiRateEmojiCell.xib in Resources */, 4A7E6D702C4E505D00F36CD3 /* MapParkingDetailsCell.xib in Resources */, + 4A46609C2C5A336900AD2BD6 /* Disclosure_Ware_Running.mp3 in Resources */, 46ACF0CF2490FEB300FAAD43 /* ExampleFooterButtonView.xib in Resources */, 4ADE43AC2C3C6AE7002FDEB8 /* PlaylistCollectionsCell.xib in Resources */, 46ACF0D92491A75300FAAD43 /* screenLandscape5.png in Resources */, 4AF0322B2C475536002DCC7D /* SportSizeCell.xib in Resources */, 46ACF0EA24925B9200FAAD43 /* ExampleAddTableViewController.storyboard in Resources */, + 4AA93AA12C59EC9400F99845 /* PlayMusicItGribView.xib in Resources */, 4ADE43A32C3C6AE6002FDEB8 /* PlaylistViewController.storyboard in Resources */, 46ACF0872490F52600FAAD43 /* MapsMenuHeader.xib in Resources */, + 4A2067372C5A4226001188E7 /* big_miz_aador.mp3 in Resources */, 46ACF07B2490F52600FAAD43 /* MapsMenuSegmentCell.xib in Resources */, 4AF032592C4762C6002DCC7D /* SportCatalogFilterCell.xib in Resources */, 4A02C90E2C3D5D3F00DD39A4 /* CryptoHeaderView.xib in Resources */, @@ -2466,7 +2539,6 @@ 4AAE16DB2C4626F900855BD9 /* TaxiMapButtonView.swift in Sources */, 4A78E9372C3C02BB00DE60F5 /* ImagineCollCell.swift in Sources */, 4ADEF3432C4ED35600BE8B83 /* BuyStockHeaderView.swift in Sources */, - 4AD5A0D52C59CF64009B8C48 /* PlayMusicItGribView.swift in Sources */, 4AF032262C475536002DCC7D /* SportBottomButtonCell.swift in Sources */, 4AB6DE422C3BF2F2004A8866 /* Screen.swift in Sources */, 4ADE43AB2C3C6AE7002FDEB8 /* PlaylistCollectionsCell.swift in Sources */, @@ -2543,6 +2615,7 @@ 4A02C9122C3D5D3F00DD39A4 /* CryptoViewController.swift in Sources */, 4A3AA75D2C4F24B700438BC5 /* MyCardsAddonsCell.swift in Sources */, 46ACF08B2490F52600FAAD43 /* MapsWeatherView.swift in Sources */, + 4AA93AA02C59EC9400F99845 /* PlayMusicItGribView.swift in Sources */, 46ACF0652490F52600FAAD43 /* MapsCollectionsCell.swift in Sources */, 46ACF0912490F52600FAAD43 /* MapsContainerControllerDelegate.swift in Sources */, 4ADE43AD2C3C6AE7002FDEB8 /* PlaylistHeaderView.swift in Sources */, @@ -2586,12 +2659,15 @@ 4A7E6D712C4E505D00F36CD3 /* MapParkingMiniCell.swift in Sources */, 4ADEF3412C4ED35600BE8B83 /* BuyStockGraphCell.swift in Sources */, 4AB6DE252C3BEE46004A8866 /* DesignLabel.swift in Sources */, + 4A4660962C5A328100AD2BD6 /* ViewCallsPlayer.swift in Sources */, 4AB6DE202C3BEE46004A8866 /* CopyableLabel.swift in Sources */, 4A78E9292C3C02BB00DE60F5 /* ImagineButtonCell.swift in Sources */, 4AB6DE262C3BEE46004A8866 /* DesignSegmentBar.swift in Sources */, 46ACF0902490F52600FAAD43 /* MapsContainerLayout.swift in Sources */, 46ACF05E2490F52600FAAD43 /* LocalizeFuncs.swift in Sources */, 4AB6DE9B2C3BF7DC004A8866 /* DesignView.swift in Sources */, + 4AD19A572C5A08080071AC96 /* PlayMusicItGradientView.swift in Sources */, + 4A20673F2C5A477E001188E7 /* TimerUtils.swift in Sources */, 4A4247742C4F09D200FF11DC /* Blurberry.swift in Sources */, 4A7164202C4F7139007C88BD /* CustomCardHeaderMainView.swift in Sources */, 4AB6DE342C3BF005004A8866 /* Cell.swift in Sources */, diff --git a/Example/ContainerControllerSwift/CustomCard/CustomCardViewController/CustomCardViewController.swift b/Example/ContainerControllerSwift/CustomCard/CustomCardViewController/CustomCardViewController.swift index 86030d9..e77e965 100644 --- a/Example/ContainerControllerSwift/CustomCard/CustomCardViewController/CustomCardViewController.swift +++ b/Example/ContainerControllerSwift/CustomCard/CustomCardViewController/CustomCardViewController.swift @@ -41,7 +41,7 @@ class CustomCardViewController: StoryboardController { // let scrollV = createMapsCollectionAdapterView() // scrollV.alpha = 0.75 // c1.add(scrollView: scrollV) -// c1.backView.y = 39 +// c1.backView?.y = 39 containers.append( c1 ) } @@ -58,7 +58,7 @@ class CustomCardViewController: StoryboardController { // let scrollV = createTableViewTestItems(number: 33) // scrollV.alpha = 0.5 // c1.add(scrollView: scrollV) -// c1.backView.y = 39 +// c1.backView?.y = 39 containers.append( c1 ) } @@ -84,7 +84,7 @@ class CustomCardViewController: StoryboardController { // let scrollV = createCollectionAdapterView(width: ScreenSize.width - (98 + 8) ) // scrollV.alpha = 0.35 // c1.add(scrollView: scrollV) -// c1.backView.y = 63 +// c1.backView?.y = 63 containers.append( c1 ) } @@ -98,7 +98,7 @@ class CustomCardViewController: StoryboardController { // let scrollV = createMapsCollectionAdapterView() // scrollV.alpha = 0.5 // c1.add(scrollView: scrollV) -// c1.backView.y = 63i +// c1.backView?.y = 63i // main(delay: p * 4) { // c1.move(type: .top) // } @@ -111,7 +111,7 @@ class CustomCardViewController: StoryboardController { containerTableView = t1 - c1.backView.subviews.forEach { + c1.backView?.subviews.forEach { $0.removeFromSuperview() } @@ -241,7 +241,7 @@ class CustomCardViewController: StoryboardController { let scrollV = createMapsCollectionAdapterView() scrollV.alpha = 0.0 c1.add(scrollView: scrollV) - c1.backView.y = 39 + c1.backView?.y = 39 UIView.animate(withDuration: 0.35) { scrollV.alpha = 0.75 } @@ -249,7 +249,7 @@ class CustomCardViewController: StoryboardController { let scrollV = createTableViewTestItems(number: 33) scrollV.alpha = 0.0 c1.add(scrollView: scrollV) - c1.backView.y = 39 + c1.backView?.y = 39 UIView.animate(withDuration: 0.35) { scrollV.alpha = 0.5 } @@ -257,7 +257,7 @@ class CustomCardViewController: StoryboardController { let scrollV = createCollectionAdapterView(width: ScreenSize.width - (98 + 8) ) scrollV.alpha = 0.0 c1.add(scrollView: scrollV) - c1.backView.y = 63 + c1.backView?.y = 63 UIView.animate(withDuration: 0.35) { scrollV.alpha = 0.35 } @@ -265,7 +265,7 @@ class CustomCardViewController: StoryboardController { let scrollV = createMapsCollectionAdapterView() scrollV.alpha = 0.0 c1.add(scrollView: scrollV) - c1.backView.y = 63 + c1.backView?.y = 63 UIView.animate(withDuration: 0.35) { scrollV.alpha = 0.5 } @@ -351,7 +351,7 @@ class CustomCardViewController: StoryboardController { let ccc = addContainer(position: .init(top: mini ? 241 : 350, bottom: mini ? 223 : 173), radius: mini ? 22 : 37, items: itemsC, addBackShadow: addBackShadow) - let frr = CGRect(x: 0, y: 0, width: ccc.0.backView.width, height: ccc.0.backView.height) + let frr = CGRect(x: 0, y: 0, width: ccc.0.backView?.width ?? 0, height: ccc.0.backView?.height ?? 0) let gradientV = CustomCardGradientMainView() gradientV.gr1.isHidden = !gradient gradientV.gr2.isHidden = gradient @@ -359,7 +359,7 @@ class CustomCardViewController: StoryboardController { .flexibleRightMargin, .flexibleTopMargin] gradientV.frame = frr - ccc.0.backView.addSubview( gradientV ) + ccc.0.backView?.addSubview( gradientV ) diff --git a/Example/ContainerControllerSwift/CustomCard/PlayMusicItCell/PlayMusicItCell.swift b/Example/ContainerControllerSwift/CustomCard/PlayMusicItCell/PlayMusicItCell.swift deleted file mode 100644 index 2a1876a..0000000 --- a/Example/ContainerControllerSwift/CustomCard/PlayMusicItCell/PlayMusicItCell.swift +++ /dev/null @@ -1,122 +0,0 @@ -import UIKit -import ContainerControllerSwift - -// MARK: - State - -extension PlayMusicItItem { - struct State { - var firstImage: UIImage? - var subtitleText: String? - var text2: String? - var image3: UIImage? - var image4: UIImage? - var image5: UIImage? - var image6: UIImage? - var image7: UIImage? - var image8: UIImage? - var image9: UIImage? - var image10: UIImage? - var image11: UIImage? - var image12: UIImage? - var handlers: Handlers = .init() - } - struct Handlers { - var onClickAt: (()->(Void))? - } -} - -// MARK: - Item - -class PlayMusicItItem: TableAdapterItem { - init(state: PlayMusicItItem.State) { - let cellData = PlayMusicItCellData(state: state) - super.init(cellClass: PlayMusicItCell.self, cellData: cellData) - } -} - -// MARK: - Data - -class PlayMusicItCellData: TableAdapterCellData { - - var state: PlayMusicItItem.State - - init(state: PlayMusicItItem.State) { - self.state = state - super.init() - // self.cellClickCallback = state.handlers.onClickAt - } - - override public func cellHeight() -> CGFloat { - // let calcHeight = calculateLabel( - // text: state.titleText, - // padding: 16, - // titleFont: SFProText.regular.size(.headline) - // ) - return Self.cHeight() - } - - public static func cHeight() -> CGFloat { - return 706.0 - } - - override public func canEditing() -> Bool { - return editing - } -} - -// MARK: - Cell - -class PlayMusicItCell: TableAdapterCell { - - public var data: PlayMusicItCellData? - - @IBOutlet private weak var firstImageView: UIImageView? - @IBOutlet private weak var subtitleLabel: UILabel? - @IBOutlet private weak var label2: UILabel? - @IBOutlet private weak var imageView3: UIImageView? - @IBOutlet private weak var imageView4: UIImageView? - @IBOutlet private weak var imageView5: UIImageView? - @IBOutlet private weak var imageView6: UIImageView? - @IBOutlet private weak var imageView7: UIImageView? - @IBOutlet private weak var imageView8: UIImageView? - @IBOutlet private weak var imageView9: UIImageView? - @IBOutlet private weak var imageView10: UIImageView? - @IBOutlet private weak var imageView11: UIImageView? - @IBOutlet private weak var imageView12: UIImageView? - - @IBOutlet override var selectedView: UIView? { didSet { } } - @IBOutlet var cardView: UIView? - @IBOutlet var button: UIButton? - - override func awakeFromNib() { - separator(hide: true) - button?.tapHideAnimation( - view: cardView, - type: .alpha(0.5), - callback: { [weak self] type in - if type == .touchUpInside { - self?.data?.state.handlers.onClickAt?() - } - } - ) - } - - override func fill(data: TableAdapterCellData?) { - guard let data = data as? PlayMusicItCellData else { return } - self.data = data - if let v = data.state.firstImage { firstImageView?.image = v } - if let v = data.state.subtitleText { subtitleLabel?.text = v } - if let v = data.state.text2 { label2?.text = v } - if let v = data.state.image3 { imageView3?.image = v } - if let v = data.state.image4 { imageView4?.image = v } - if let v = data.state.image5 { imageView5?.image = v } - if let v = data.state.image6 { imageView6?.image = v } - if let v = data.state.image7 { imageView7?.image = v } - if let v = data.state.image8 { imageView8?.image = v } - if let v = data.state.image9 { imageView9?.image = v } - if let v = data.state.image10 { imageView10?.image = v } - if let v = data.state.image11 { imageView11?.image = v } - if let v = data.state.image12 { imageView12?.image = v } - - } -} \ No newline at end of file diff --git a/Example/ContainerControllerSwift/CustomCard/PlayMusicItCell/PlayMusicItCell.xib b/Example/ContainerControllerSwift/CustomCard/PlayMusicItCell/PlayMusicItCell.xib deleted file mode 100644 index 631cacb..0000000 --- a/Example/ContainerControllerSwift/CustomCard/PlayMusicItCell/PlayMusicItCell.xib +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/Example/ContainerControllerSwift/CustomCard/PlayMusicItGribView/PlayMusicItGribView.swift b/Example/ContainerControllerSwift/CustomCard/PlayMusicItGribView/PlayMusicItGribView.swift deleted file mode 100644 index 372afd2..0000000 --- a/Example/ContainerControllerSwift/CustomCard/PlayMusicItGribView/PlayMusicItGribView.swift +++ /dev/null @@ -1,19 +0,0 @@ -import UIKit -import ContainerControllerSwift - -// typealias PlayMusicItGribButtonActionCallback = () -> Void - -class PlayMusicItGribView: XibView { - - // MARK: - IBOutlets - - - // @IBOutlet weak var button: DesignButton! - - override func loadedFromNib() { - - } - - // @IBAction func buttonClickAction(_ sender: DesignButton) { - // } -} \ No newline at end of file diff --git a/Example/ContainerControllerSwift/CustomCard/PlayMusicItGribView/PlayMusicItGribView.xib b/Example/ContainerControllerSwift/CustomCard/PlayMusicItGribView/PlayMusicItGribView.xib deleted file mode 100644 index f68f8de..0000000 --- a/Example/ContainerControllerSwift/CustomCard/PlayMusicItGribView/PlayMusicItGribView.xib +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/Example/ContainerControllerSwift/CustomCard/PlayMusicViewController/PlayMusicViewController.swift b/Example/ContainerControllerSwift/CustomCard/PlayMusicViewController/PlayMusicViewController.swift deleted file mode 100644 index 45e62ad..0000000 --- a/Example/ContainerControllerSwift/CustomCard/PlayMusicViewController/PlayMusicViewController.swift +++ /dev/null @@ -1,42 +0,0 @@ -import UIKit -import ContainerControllerSwift - -class PlayMusicViewController: StoryboardController { - - @IBOutlet weak var tableView: TableAdapterView! - var containers: [ContainerController] = [] - - var containerTableView: TableAdapterView? - var container: ContainerController? - - override func viewDidLoad() { - super.viewDidLoad() - - - self.navBarHide = true - view.backgroundColor = .white - let color1 = #colorLiteral(red: 0.1019607843, green: 0.168627451, blue: 0.4588235294, alpha: 1) - let img1 = #imageLiteral(resourceName: "imgPlaylistMain") - - var items: [TableAdapterItem] = [] - // items.append( PlaylistTitleItem(state: .init() ) ) - tableView.set(items: items, animated: true) - - let fr = CGRect(x: 0, y: 0, width: ScreenSize.width, height: 26) - let header = TaxiContainerHeaderView(frame: fr) - - var itemsC: [TableAdapterItem] = [] - // itemsC.append( TaxiAddressABItem(state: .init() ) ) - // itemsC.append( TaxiAddressABItem(state: .init() ) ) - // itemsC.append( TaxiCollectionCarsItem(state: .init() ) ) - // itemsC.append( TaxiVisaCardItem(state: .init() ) ) - // itemsC.append( TaxiButtonBottomItem(state: .init() ) ) - - let ccc = addContainer(position: .init(top: 266, bottom: 380), radius: 20, items: itemsC, header: header) - container = ccc.0 - containerTableView = ccc.1 - - containers.append( ccc.0 ) - } - -} diff --git a/Example/ContainerControllerSwift/BuyStock/Blurberry/LICENSE b/Example/ContainerControllerSwift/Framework/Blurberry/LICENSE similarity index 100% rename from Example/ContainerControllerSwift/BuyStock/Blurberry/LICENSE rename to Example/ContainerControllerSwift/Framework/Blurberry/LICENSE diff --git a/Example/ContainerControllerSwift/BuyStock/Blurberry/README.md b/Example/ContainerControllerSwift/Framework/Blurberry/README.md similarity index 100% rename from Example/ContainerControllerSwift/BuyStock/Blurberry/README.md rename to Example/ContainerControllerSwift/Framework/Blurberry/README.md diff --git a/Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/Blurberry.h b/Example/ContainerControllerSwift/Framework/Blurberry/Sources/Blurberry.h similarity index 100% rename from Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/Blurberry.h rename to Example/ContainerControllerSwift/Framework/Blurberry/Sources/Blurberry.h diff --git a/Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/Extensions/NSObject+Extension.h b/Example/ContainerControllerSwift/Framework/Blurberry/Sources/Extensions/NSObject+Extension.h similarity index 100% rename from Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/Extensions/NSObject+Extension.h rename to Example/ContainerControllerSwift/Framework/Blurberry/Sources/Extensions/NSObject+Extension.h diff --git a/Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/Extensions/NSObject+Extension.m b/Example/ContainerControllerSwift/Framework/Blurberry/Sources/Extensions/NSObject+Extension.m similarity index 100% rename from Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/Extensions/NSObject+Extension.m rename to Example/ContainerControllerSwift/Framework/Blurberry/Sources/Extensions/NSObject+Extension.m diff --git a/Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/General/Blurberry.swift b/Example/ContainerControllerSwift/Framework/Blurberry/Sources/General/Blurberry.swift similarity index 100% rename from Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/General/Blurberry.swift rename to Example/ContainerControllerSwift/Framework/Blurberry/Sources/General/Blurberry.swift diff --git a/Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/Views/VisualEffectView+Internal.swift b/Example/ContainerControllerSwift/Framework/Blurberry/Sources/Views/VisualEffectView+Internal.swift similarity index 100% rename from Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/Views/VisualEffectView+Internal.swift rename to Example/ContainerControllerSwift/Framework/Blurberry/Sources/Views/VisualEffectView+Internal.swift diff --git a/Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/Views/VisualEffectView+Public.swift b/Example/ContainerControllerSwift/Framework/Blurberry/Sources/Views/VisualEffectView+Public.swift similarity index 100% rename from Example/ContainerControllerSwift/BuyStock/Blurberry/Sources/Views/VisualEffectView+Public.swift rename to Example/ContainerControllerSwift/Framework/Blurberry/Sources/Views/VisualEffectView+Public.swift diff --git a/Example/ContainerControllerSwift/Framework/ButtonTapAnimations/UIButton+Extention.swift b/Example/ContainerControllerSwift/Framework/ButtonTapAnimations/UIButton+Extention.swift index c8c7bc9..d86f504 100644 --- a/Example/ContainerControllerSwift/Framework/ButtonTapAnimations/UIButton+Extention.swift +++ b/Example/ContainerControllerSwift/Framework/ButtonTapAnimations/UIButton+Extention.swift @@ -37,6 +37,7 @@ class Button: UIButton { /// Simple tap implementation typealias Closure = () -> () +typealias ClosureClick = (_ down: Bool) -> () class ClosureSleeve { @@ -59,5 +60,21 @@ extension UIControl { sleeve, objc_AssociationPolicy.OBJC_ASSOCIATION_RETAIN) } + + func tapClassic(_ closure: @escaping ClosureClick) { + self.tap(for: .touchDown) { // [weak self] in + closure(true) + } + self.tap(for: .touchUpInside) { // [weak self] in + closure(false) + } + self.tap(for: .touchUpOutside) { // [weak self] in + closure(false) + } + self.tap(for: .touchCancel) { // [weak self] in + closure(false) + } + + } } diff --git a/Example/ContainerControllerSwift/Framework/LoadNib/StoryboardController.swift b/Example/ContainerControllerSwift/Framework/LoadNib/StoryboardController.swift index 7ded9fb..be81285 100644 --- a/Example/ContainerControllerSwift/Framework/LoadNib/StoryboardController.swift +++ b/Example/ContainerControllerSwift/Framework/LoadNib/StoryboardController.swift @@ -60,7 +60,7 @@ class StoryboardController: UIViewController { extension StoryboardController: ContainerControllerDelegate { - func addContainer(position: ContainerPosition, radius: CGFloat, items: [TableAdapterItem]? = nil, delegate: ContainerControllerDelegate? = nil, addShadow: Bool = true, addBackShadow: Bool = false, header: UIView? = nil, footer: UIView? = nil) -> (ContainerController, TableAdapterView) { + func addContainer(position: ContainerPosition, radius: CGFloat, items: [TableAdapterItem]? = nil, delegate: ContainerControllerDelegate? = nil, addShadow: Bool = true, addBackShadow: Bool = false, header: UIView? = nil, footer: UIView? = nil, back: UIView? = nil) -> (ContainerController, TableAdapterView) { let layoutC = ContainerLayout() layoutC.positions = position // @@ -89,6 +89,8 @@ extension StoryboardController: ContainerControllerDelegate { container.set(backgroundShadowShow: addBackShadow) container.view.backgroundColor = .white + + // container.view.backgroundColor = color if let headerV = header { @@ -99,6 +101,10 @@ extension StoryboardController: ContainerControllerDelegate { container.add(footerView: footerV) } + if let back = back { + container.backView?.addSubview(back) + } + let table = TableAdapterView(frame: CGRect(x: 0, y: 0, width: ContainerDevice.width, height: 0), style: .plain) table.indicatorStyle = .default // container.add(scrollView: addCollectionView()) diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOff.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOff.imageset/Contents.json new file mode 100644 index 0000000..2e8729b --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOff.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicContainerGripOff.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOff.imageset/iconPlayMusicContainerGripOff.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOff.imageset/iconPlayMusicContainerGripOff.png new file mode 100644 index 0000000..639f8fa Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOff.imageset/iconPlayMusicContainerGripOff.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOn.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOn.imageset/Contents.json new file mode 100644 index 0000000..28f3d15 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOn.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicContainerGripOn.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOn.imageset/iconPlayMusicContainerGripOn.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOn.imageset/iconPlayMusicContainerGripOn.png new file mode 100644 index 0000000..7148753 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicContainerGripOn.imageset/iconPlayMusicContainerGripOn.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsAirdrop.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsAirdrop.imageset/Contents.json new file mode 100644 index 0000000..de9c343 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsAirdrop.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicControlsAirdrop.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsAirdrop.imageset/iconPlayMusicControlsAirdrop.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsAirdrop.imageset/iconPlayMusicControlsAirdrop.png new file mode 100644 index 0000000..7ef137d Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsAirdrop.imageset/iconPlayMusicControlsAirdrop.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardLeft.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardLeft.imageset/Contents.json new file mode 100644 index 0000000..3e4ac6a --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardLeft.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicControlsFastForwardLeft.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardLeft.imageset/iconPlayMusicControlsFastForwardLeft.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardLeft.imageset/iconPlayMusicControlsFastForwardLeft.png new file mode 100644 index 0000000..e41897b Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardLeft.imageset/iconPlayMusicControlsFastForwardLeft.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardRight.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardRight.imageset/Contents.json new file mode 100644 index 0000000..cc74e26 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardRight.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicControlsFastForwardRight.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardRight.imageset/iconPlayMusicControlsFastForwardRight.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardRight.imageset/iconPlayMusicControlsFastForwardRight.png new file mode 100644 index 0000000..e455498 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsFastForwardRight.imageset/iconPlayMusicControlsFastForwardRight.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPause.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPause.imageset/Contents.json new file mode 100644 index 0000000..2018f57 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPause.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicControlsPause.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPause.imageset/iconPlayMusicControlsPause.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPause.imageset/iconPlayMusicControlsPause.png new file mode 100644 index 0000000..4d34274 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPause.imageset/iconPlayMusicControlsPause.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPlay.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPlay.imageset/Contents.json new file mode 100644 index 0000000..54f7a88 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPlay.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicControlsPlay.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPlay.imageset/iconPlayMusicControlsPlay.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPlay.imageset/iconPlayMusicControlsPlay.png new file mode 100644 index 0000000..0befb13 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsPlay.imageset/iconPlayMusicControlsPlay.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsRepeat.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsRepeat.imageset/Contents.json new file mode 100644 index 0000000..cbea86a --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsRepeat.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicControlsRepeat.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsRepeat.imageset/iconPlayMusicControlsRepeat.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsRepeat.imageset/iconPlayMusicControlsRepeat.png new file mode 100644 index 0000000..f65599f Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsRepeat.imageset/iconPlayMusicControlsRepeat.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsShuffle.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsShuffle.imageset/Contents.json new file mode 100644 index 0000000..07371d7 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsShuffle.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicControlsShuffle.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsShuffle.imageset/iconPlayMusicControlsShuffle.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsShuffle.imageset/iconPlayMusicControlsShuffle.png new file mode 100644 index 0000000..0bf1258 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicControlsShuffle.imageset/iconPlayMusicControlsShuffle.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicMore.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicMore.imageset/Contents.json new file mode 100644 index 0000000..5498ec8 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicMore.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicMore.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicMore.imageset/iconPlayMusicMore.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicMore.imageset/iconPlayMusicMore.png new file mode 100644 index 0000000..d460039 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicMore.imageset/iconPlayMusicMore.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeHight.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeHight.imageset/Contents.json new file mode 100644 index 0000000..2e4995a --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeHight.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicVolumeHight.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeHight.imageset/iconPlayMusicVolumeHight.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeHight.imageset/iconPlayMusicVolumeHight.png new file mode 100644 index 0000000..f04ef83 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeHight.imageset/iconPlayMusicVolumeHight.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeOff.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeOff.imageset/Contents.json new file mode 100644 index 0000000..dafdbf7 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeOff.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlayMusicVolumeOff.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeOff.imageset/iconPlayMusicVolumeOff.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeOff.imageset/iconPlayMusicVolumeOff.png new file mode 100644 index 0000000..1b5e1c3 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/iconPlayMusicVolumeOff.imageset/iconPlayMusicVolumeOff.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/imgPlayMusicIdDisclosureYouMe.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/imgPlayMusicIdDisclosureYouMe.imageset/Contents.json new file mode 100644 index 0000000..5c4a717 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/imgPlayMusicIdDisclosureYouMe.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "imgPlayMusicIdDisclosureYouMe.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/imgPlayMusicIdDisclosureYouMe.imageset/imgPlayMusicIdDisclosureYouMe.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/imgPlayMusicIdDisclosureYouMe.imageset/imgPlayMusicIdDisclosureYouMe.png new file mode 100644 index 0000000..4f414e8 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/imgPlayMusicIdDisclosureYouMe.imageset/imgPlayMusicIdDisclosureYouMe.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_CamelPhat_DropIt.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_CamelPhat_DropIt.imageset/Contents.json new file mode 100644 index 0000000..9eb000c --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_CamelPhat_DropIt.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "img_CamelPhat_DropIt.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_CamelPhat_DropIt.imageset/img_CamelPhat_DropIt.jpg b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_CamelPhat_DropIt.imageset/img_CamelPhat_DropIt.jpg new file mode 100644 index 0000000..4c57745 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_CamelPhat_DropIt.imageset/img_CamelPhat_DropIt.jpg differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_Ware_Running.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_Ware_Running.imageset/Contents.json new file mode 100644 index 0000000..b11dfcb --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_Ware_Running.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "img_Disclosure_Ware_Running.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_Ware_Running.imageset/img_Disclosure_Ware_Running.jpg b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_Ware_Running.imageset/img_Disclosure_Ware_Running.jpg new file mode 100644 index 0000000..eee56a6 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_Ware_Running.imageset/img_Disclosure_Ware_Running.jpg differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_You_Me.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_You_Me.imageset/Contents.json new file mode 100644 index 0000000..318d4fb --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_You_Me.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "img_Disclosure_You_Me.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_You_Me.imageset/img_Disclosure_You_Me.jpg b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_You_Me.imageset/img_Disclosure_You_Me.jpg new file mode 100644 index 0000000..9eb1eb1 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Disclosure_You_Me.imageset/img_Disclosure_You_Me.jpg differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Flume_Greatest_View.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Flume_Greatest_View.imageset/Contents.json new file mode 100644 index 0000000..dda1fa5 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Flume_Greatest_View.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "img_Flume_Greatest_View.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Flume_Greatest_View.imageset/img_Flume_Greatest_View.jpg b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Flume_Greatest_View.imageset/img_Flume_Greatest_View.jpg new file mode 100644 index 0000000..b996d35 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_Flume_Greatest_View.imageset/img_Flume_Greatest_View.jpg differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_benno_blome_botha.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_benno_blome_botha.imageset/Contents.json new file mode 100644 index 0000000..a20a503 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_benno_blome_botha.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "benno_blome_botha.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_benno_blome_botha.imageset/benno_blome_botha.jpg b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_benno_blome_botha.imageset/benno_blome_botha.jpg new file mode 100644 index 0000000..9c4370f Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_benno_blome_botha.imageset/benno_blome_botha.jpg differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_big_miz_aador.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_big_miz_aador.imageset/Contents.json new file mode 100644 index 0000000..fb0fa4b --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_big_miz_aador.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "big_miz_aador.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_big_miz_aador.imageset/big_miz_aador.jpg b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_big_miz_aador.imageset/big_miz_aador.jpg new file mode 100644 index 0000000..19482b4 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_big_miz_aador.imageset/big_miz_aador.jpg differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_claptone_music_got_me.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_claptone_music_got_me.imageset/Contents.json new file mode 100644 index 0000000..8fc44f7 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_claptone_music_got_me.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "claptone_music_got_me.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_claptone_music_got_me.imageset/claptone_music_got_me.jpg b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_claptone_music_got_me.imageset/claptone_music_got_me.jpg new file mode 100644 index 0000000..c676d1a Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_claptone_music_got_me.imageset/claptone_music_got_me.jpg differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_funky_house_classic.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_funky_house_classic.imageset/Contents.json new file mode 100644 index 0000000..d926eeb --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_funky_house_classic.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "funky_house_classic.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_funky_house_classic.imageset/funky_house_classic.jpg b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_funky_house_classic.imageset/funky_house_classic.jpg new file mode 100644 index 0000000..cdf5225 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_funky_house_classic.imageset/funky_house_classic.jpg differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_myselor_neurolife.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_myselor_neurolife.imageset/Contents.json new file mode 100644 index 0000000..1165318 --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_myselor_neurolife.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "myselor_neurolife.jpg", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_myselor_neurolife.imageset/myselor_neurolife.jpg b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_myselor_neurolife.imageset/myselor_neurolife.jpg new file mode 100644 index 0000000..a5d70db Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_myselor_neurolife.imageset/myselor_neurolife.jpg differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_the_audio_bar.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_the_audio_bar.imageset/Contents.json new file mode 100644 index 0000000..245da9a --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_the_audio_bar.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "the_audio_bar.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_the_audio_bar.imageset/the_audio_bar.png b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_the_audio_bar.imageset/the_audio_bar.png new file mode 100644 index 0000000..b331566 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/PlayMusic/img_the_audio_bar.imageset/the_audio_bar.png differ diff --git a/Example/ContainerControllerSwift/Images.xcassets/Playlist/iconPlaylistPause.imageset/Contents.json b/Example/ContainerControllerSwift/Images.xcassets/Playlist/iconPlaylistPause.imageset/Contents.json new file mode 100644 index 0000000..e8263cc --- /dev/null +++ b/Example/ContainerControllerSwift/Images.xcassets/Playlist/iconPlaylistPause.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "iconPlaylistPause.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/Example/ContainerControllerSwift/Images.xcassets/Playlist/iconPlaylistPause.imageset/iconPlaylistPause.png b/Example/ContainerControllerSwift/Images.xcassets/Playlist/iconPlaylistPause.imageset/iconPlaylistPause.png new file mode 100644 index 0000000..bcc03d8 Binary files /dev/null and b/Example/ContainerControllerSwift/Images.xcassets/Playlist/iconPlaylistPause.imageset/iconPlaylistPause.png differ diff --git a/Example/ContainerControllerSwift/MapParking/MapParkingViewController/MapParkingViewController.swift b/Example/ContainerControllerSwift/MapParking/MapParkingViewController/MapParkingViewController.swift index ca5582c..58ec548 100644 --- a/Example/ContainerControllerSwift/MapParking/MapParkingViewController/MapParkingViewController.swift +++ b/Example/ContainerControllerSwift/MapParking/MapParkingViewController/MapParkingViewController.swift @@ -45,9 +45,9 @@ class MapParkingViewController: StoryboardController { ccc.0.view.clipsToBounds = false ccc.0.scrollView?.clipsToBounds = false - ccc.0.backView.clipsToBounds = false + ccc.0.backView?.clipsToBounds = false headerr.clipsToBounds = false -// ccc.0.backView.addSubview( header) +// ccc.0.backView?.addSubview( header) containerTableView = ccc.1 diff --git a/Example/ContainerControllerSwift/PlayMusic/CamelPhat_DropIt.mp3 b/Example/ContainerControllerSwift/PlayMusic/CamelPhat_DropIt.mp3 new file mode 100755 index 0000000..332d15c Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/CamelPhat_DropIt.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/Disclosure_Ware_Running.mp3 b/Example/ContainerControllerSwift/PlayMusic/Disclosure_Ware_Running.mp3 new file mode 100755 index 0000000..b16b4c0 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/Disclosure_Ware_Running.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/Disclosure_You_Me.mp3 b/Example/ContainerControllerSwift/PlayMusic/Disclosure_You_Me.mp3 new file mode 100755 index 0000000..f10c227 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/Disclosure_You_Me.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/Flume_Greatest_View.mp3 b/Example/ContainerControllerSwift/PlayMusic/Flume_Greatest_View.mp3 new file mode 100755 index 0000000..759c878 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/Flume_Greatest_View.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/Flume_Sleepless.mp3 b/Example/ContainerControllerSwift/PlayMusic/Flume_Sleepless.mp3 new file mode 100755 index 0000000..10b7604 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/Flume_Sleepless.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/PlayMusicItCell/PlayMusicItCell.swift b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItCell/PlayMusicItCell.swift new file mode 100644 index 0000000..4275f85 --- /dev/null +++ b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItCell/PlayMusicItCell.swift @@ -0,0 +1,376 @@ +import UIKit +import AVFAudio +import ContainerControllerSwift + +// MARK: - State + +extension PlayMusicItItem { + enum FastForwardType { + case right + case left + } + + struct State { + var type: ViewCallsPlayerType = .none + + var duration: CGFloat = 0 + var currentTimeChange: Bool = false + var currentTime: CGFloat = 0 + var volume: Float = 0 + var time: String = "" + var play: Bool? + + var firstImage: UIImage? + var title: String? + var subtitle: String? + var image3: UIImage? + var image4: UIImage? + var image5: UIImage? + var image6: UIImage? + var image7: UIImage? + var image8: UIImage? + var image9: UIImage? + var image10: UIImage? + var image11: UIImage? + var image12: UIImage? + var handlers: Handlers = .init() + } + struct Handlers { + var onPlayAt: ((_ play: Bool)->(Void))? + var onFastForwardAt: ((_ type: FastForwardType)->(Void))? + var onMoreAt: (()->(Void))? + var onClickAt: (()->(Void))? + + + var onTimeAt: ((_ time: CGFloat)->(Void))? +// var onBottomAllAt: (()->(Void))? + } +} + +// MARK: - Item + +class PlayMusicItItem: TableAdapterItem { + init(state: PlayMusicItItem.State) { + let cellData = PlayMusicItCellData(state: state) + super.init(cellClass: PlayMusicItCell.self, cellData: cellData) + } +} + +// MARK: - Data + +class PlayMusicItCellData: TableAdapterCellData { + + var state: PlayMusicItItem.State + + init(state: PlayMusicItItem.State) { + self.state = state + super.init() + // self.cellClickCallback = state.handlers.onClickAt + } + + override public func cellHeight() -> CGFloat { + // let calcHeight = calculateLabel( + // text: state.titleText, + // padding: 16, + // titleFont: SFProText.regular.size(.headline) + // ) + return Self.cHeight() + } + + public static func cHeight() -> CGFloat { + return 740.0 + } + + override public func canEditing() -> Bool { + return editing + } +} + +// MARK: - Cell + +class PlayMusicItCell: TableAdapterCell { + + @IBOutlet var labelY: NSLayoutConstraint? + @IBOutlet var imageHeight: NSLayoutConstraint! + @IBOutlet var imageWidth: NSLayoutConstraint! + public var data: PlayMusicItCellData? + + @IBOutlet private weak var firstImageView: UIImageView? + + @IBOutlet var miniView: UIView! + @IBOutlet private weak var subtitleLabel: UILabel? + @IBOutlet private weak var titleLabel: UILabel? + + @IBOutlet var subtitleMiniLabel: UILabel! + @IBOutlet private weak var titleMiniLabel: UILabel? + @IBOutlet var controlMiniImageView: UIImageView! + + @IBOutlet var time1Label: UILabel! + @IBOutlet var time2Label: UILabel! + @IBOutlet private weak var imageView3: UIImageView? + @IBOutlet private weak var imageView4: UIImageView? + @IBOutlet private weak var imageView9: UIImageView? + @IBOutlet private weak var imageView10: UIImageView? + @IBOutlet private weak var imageView11: UIImageView? + + @IBOutlet var ccardView: UIView! + @IBOutlet var cccardView: UIView! + + @IBOutlet var timeSlider: UISlider! + @IBOutlet var volumeSlider: UISlider! + + @IBOutlet var topControlMoreImageView: UIImageView! + @IBOutlet var centerControlRightImageView: UIImageView! + @IBOutlet var centerControlLeftImageView: UIImageView! + @IBOutlet var centerControllPlayView: UIView! + @IBOutlet var centerControlPlayImageView: UIImageView! + @IBOutlet var bottomControlsView: UIView! + + @IBOutlet override var selectedView: UIView? { didSet { } } + @IBOutlet var cardView: UIView? + @IBOutlet var button: UIButton? + + @IBOutlet var imgMusicPicView: DesignFigure! + var box: Bool = false + var pause: Bool = true + + @IBOutlet var topControlMoreBtn: UIButton! + + @IBOutlet var bottomControlsBtn: UIButton! + @IBOutlet var centerControlRightBtn: UIButton! + @IBOutlet var centerControlLeftBtn: UIButton! + @IBOutlet var centerControlPlayBtn: UIButton! + + func updateImage(full: Bool = false) { + let v = ScreenSize.width - 50 +// let v2 = ScreenSize.width + 7 + imageWidth.constant = self.box ? 60 : v + imageHeight.constant = self.box ? 60 : v +// labelY.constant = self.box ? 25 : v2 + + if self.box && self.subtitleLabel?.alpha == 1 { + self.setNeedsUpdateConstraints() + } else if !self.box && self.subtitleLabel?.alpha == 0 { + self.setNeedsUpdateConstraints() + } + + if let playerType = self.data?.state.type, + let d = self.data?.state.duration, + let c = self.data?.state.currentTime, + let time = self.data?.state.time, + let v = self.data?.state.volume { + print(" player cell \(d) \(c) \(v) ") + + let currentTimeChange = self.data?.state.currentTimeChange ?? false + if !currentTimeChange { + self.timeSlider.maximumValue = Float(d) + self.timeSlider.value = d == c ? 0.0 : Float(c) + } + + self.volumeSlider.maximumValue = Float(1.00) + + self.volumeSlider.value = Float(v) + + let titlee = "\(ViewCallsPlayer.getTitle( playerType))" + let subtitle = "\(ViewCallsPlayer.getSubtitle( playerType))" + + self.titleLabel?.text = titlee + self.titleMiniLabel!.text = titlee + + self.subtitleLabel?.text = subtitle + self.subtitleMiniLabel.text = subtitle + + let ddTime = String(format: "%02d:%02d", ((Int)((d))) / 60, ((Int)((d))) % 60 ) + if !currentTimeChange { + self.time1Label.text = time + } + self.time2Label.text = ddTime + + self.firstImageView?.image = ViewCallsPlayer.getImage( playerType) + + } + + + UIView.animate(withDuration: 0.35) { + if self.box && self.titleLabel?.alpha == 1 { + self.subtitleLabel?.alpha = 0 + self.titleLabel?.alpha = 0 + self.miniView.alpha = 1 + self.layoutIfNeeded() + } else if !self.box && self.titleLabel?.alpha == 0 { + self.miniView.alpha = 0 + self.subtitleLabel?.alpha = 1 + self.titleLabel?.alpha = 1 + self.layoutIfNeeded() + } + } + + let imgPlay = #imageLiteral(resourceName: "iconPlayMusicControlsPlay") + let imgPause = #imageLiteral(resourceName: "iconPlayMusicControlsPause") + + let imgMiniPause = #imageLiteral(resourceName: "iconPlaylistPause") + let imgMiniPlay = #imageLiteral(resourceName: "iconPlaylistPlay") + + if full { + self.pause = !self.pause + } + + + if let play = self.data?.state.play { + self.pause = !play + } + + self.centerControlPlayImageView.image = self.pause ? imgPlay : imgPause + self.controlMiniImageView.image = self.pause ? imgMiniPlay : imgMiniPause + } + + override func awakeFromNib() { + self.updateImage(full: false) + + separator(hide: true) + + button?.tapClassic({ [weak self] down in + UIView.animate(withDuration: down ? 0.0 : 0.15) { + self?.cccardView.alpha = down ? 0.14 : 0.05 + } + if !down { + self?.data?.state.handlers.onClickAt?() + } + }) + + + + centerControlPlayBtn?.tapHideAnimation( + view: centerControllPlayView, + type: .alpha(0.5), + callback: { //[weak self] + type in + if type == .touchUpInside { + let pl = !self.pause + self.data?.state.play = !pl + self.pause = !self.pause +// if let play = self.data?.state.play { +// self.pause = !play +// } + self.updateImage(full: false) + self.data?.state.handlers.onPlayAt?(!self.pause) + } + } + ) + + centerControlRightBtn?.tapHideAnimation( + view: centerControlRightImageView, + type: .alpha(0.5), + callback: { //[weak self] + type in + if type == .touchUpInside { + self.data?.state.play = true + self.pause = false + self.updateImage(full: false) + self.data?.state.handlers.onFastForwardAt?(.right) + } + } + ) + centerControlLeftBtn?.tapHideAnimation( + view: centerControlLeftImageView, + type: .alpha(0.5), + callback: { //[weak self] + type in + if type == .touchUpInside { + self.data?.state.play = true + self.pause = false + self.updateImage(full: false) + self.data?.state.handlers.onFastForwardAt?(.left) + } + } + ) + + + topControlMoreBtn?.tapHideAnimation( + view: topControlMoreImageView, + type: .alpha(0.5), + callback: { //[weak self] + type in + if type == .touchUpInside { + self.data?.state.handlers.onMoreAt?() + } + } + ) + bottomControlsBtn?.tapHideAnimation( + view: bottomControlsView, + type: .alpha(0.5), + callback: { //[weak self] + type in + if type == .touchUpInside { + + self.data?.state.handlers.onMoreAt?() + } + } + ) + } + + @IBAction func timeSliderDownAction(_ sender: UISlider) { + timeSliderrAction(sender, change: true) + } + + @IBAction func timeSliderAction(_ sender: UISlider) { + timeSliderrAction(sender, change: false) + + + } + + func timeSliderrAction(_ sender: UISlider, change: Bool = true) { + if change { self.data?.state.currentTimeChange = true } + + let newV = CGFloat(sender.value) + + + let time = String(format: "%02d:%02d", ((Int)((newV))) / 60, ((Int)((newV))) % 60 ) + + print("timeSliderrAction \(newV) ") + + self.time1Label.text = time + + if !change { + ViewCallsPlayer.shared.avPlayer?.currentTime = newV + self.data?.state.currentTimeChange = false + } + + self.data?.state.handlers.onTimeAt?(newV) + } + + @IBAction func volumeSliderAction(_ sender: UISlider) { + +// AVAudioSession.sharedInstance().setVolume(sender.value, at: CMTime.zero) + } + override func fill(data: TableAdapterCellData?) { + guard let data = data as? PlayMusicItCellData else { return } + self.data = data + + if let play = self.data?.state.play { + self.pause = !play + } + + if let v = data.state.firstImage { firstImageView?.image = v } + if let v = data.state.title { + titleLabel?.text = v + titleMiniLabel?.text = v + } + if let v = data.state.subtitle { + subtitleLabel?.text = v + subtitleMiniLabel?.text = v + } + if let v = data.state.image3 { imageView3?.image = v + } + if let v = data.state.image4 { imageView4?.image = v } + if let v = data.state.image9 { imageView9?.image = v } + if let v = data.state.image10 { imageView10?.image = v } + if let v = data.state.image11 { imageView11?.image = v } +// if let v = data.state.image5 { imageView5?.image = v } +// if let v = data.state.image6 { imageView6?.image = v } +// if let v = data.state.image7 { imageView7?.image = v } +// if let v = data.state.image8 { imageView8?.image = v } +// if let v = data.state.image12 { imageView12?.image = v } + + } +} diff --git a/Example/ContainerControllerSwift/PlayMusic/PlayMusicItCell/PlayMusicItCell.xib b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItCell/PlayMusicItCell.xib new file mode 100644 index 0000000..bd8f386 --- /dev/null +++ b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItCell/PlayMusicItCell.xib @@ -0,0 +1,485 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGradientView/PlayMusicItGradientView.swift b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGradientView/PlayMusicItGradientView.swift new file mode 100644 index 0000000..93df20f --- /dev/null +++ b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGradientView/PlayMusicItGradientView.swift @@ -0,0 +1,34 @@ +import UIKit +import ContainerControllerSwift + +// typealias PlayMusicItGradientButtonActionCallback = () -> Void + +class PlayMusicItGradientView: XibView { + + // MARK: - IBOutlets + + + // @IBOutlet weak var button: DesignButton! + + required public override init() { + super.init() + let fr = CGRect(x: 0, y: 0, width: ScreenSize.width, height: 818.0) + super.frame = fr + } + + required public init(frame: CGRect) { + super.init() + super.frame = frame + } + + required public init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + } + + override func loadedFromNib() { + + } + + // @IBAction func buttonClickAction(_ sender: DesignButton) { + // } +} \ No newline at end of file diff --git a/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGradientView/PlayMusicItGradientView.xib b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGradientView/PlayMusicItGradientView.xib new file mode 100644 index 0000000..ffad077 --- /dev/null +++ b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGradientView/PlayMusicItGradientView.xib @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGribView/PlayMusicItGribView.swift b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGribView/PlayMusicItGribView.swift new file mode 100644 index 0000000..1b71a2d --- /dev/null +++ b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGribView/PlayMusicItGribView.swift @@ -0,0 +1,46 @@ +import UIKit +import ContainerControllerSwift + +// typealias PlayMusicItGribButtonActionCallback = () -> Void + +class PlayMusicItGribView: XibView { + + // MARK: - IBOutlets + + @IBOutlet private weak var firstImageView: UIImageView? + @IBOutlet private weak var secondImageView: UIImageView? + + // @IBOutlet weak var button: DesignButton! + + required public override init() { + super.init() + super.frame = Self.rrect() + } + + class func rrect() -> CGRect { + CGRect(x: 0, y: 0, width: ScreenSize.width, height: 87) + } + + func grib(visible: Bool, open: Bool) { + firstImageView?.isHidden = !open + firstImageView?.alpha = visible ? 1 : 0 + secondImageView?.isHidden = open + secondImageView?.alpha = visible ? 1 : 0 + } + + required public init(frame: CGRect) { + super.init() + super.frame = frame + } + + required public init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + } + + override func loadedFromNib() { + + } + + // @IBAction func buttonClickAction(_ sender: DesignButton) { + // } +} diff --git a/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGribView/PlayMusicItGribView.xib b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGribView/PlayMusicItGribView.xib new file mode 100644 index 0000000..67d10da --- /dev/null +++ b/Example/ContainerControllerSwift/PlayMusic/PlayMusicItGribView/PlayMusicItGribView.xib @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Example/ContainerControllerSwift/CustomCard/PlayMusicViewController/PlayMusicViewController.storyboard b/Example/ContainerControllerSwift/PlayMusic/PlayMusicViewController/PlayMusicViewController.storyboard similarity index 59% rename from Example/ContainerControllerSwift/CustomCard/PlayMusicViewController/PlayMusicViewController.storyboard rename to Example/ContainerControllerSwift/PlayMusic/PlayMusicViewController/PlayMusicViewController.storyboard index e9d8d1a..3ed518c 100644 --- a/Example/ContainerControllerSwift/CustomCard/PlayMusicViewController/PlayMusicViewController.storyboard +++ b/Example/ContainerControllerSwift/PlayMusic/PlayMusicViewController/PlayMusicViewController.storyboard @@ -1,40 +1,40 @@ - + - - + + - + - - + + - + - - - - + + + + - - + + - \ No newline at end of file + diff --git a/Example/ContainerControllerSwift/PlayMusic/PlayMusicViewController/PlayMusicViewController.swift b/Example/ContainerControllerSwift/PlayMusic/PlayMusicViewController/PlayMusicViewController.swift new file mode 100644 index 0000000..662d646 --- /dev/null +++ b/Example/ContainerControllerSwift/PlayMusic/PlayMusicViewController/PlayMusicViewController.swift @@ -0,0 +1,618 @@ + +import UIKit +import ContainerControllerSwift +import AVFAudio + +class PlayMusicViewController: StoryboardController { + + @IBOutlet weak var tableView: TableAdapterView! + var containers: [ContainerController] = [] + + var musicItems: [ViewCallsPlayerType] = [ + .disclosure_you_me, + .flume_greatest_view, + .disclosure_ware_running, + .camelphat_dropit, + .the_audio_bar, + .funky_house_classic, + .big_miz_aador, + .claptone_music_got_me, + .myselor_neurolife, + .benno_blome_botha, + ] + private var timer: Timer? + private let timerUpdateInterval = 0.25 + + + var containerTableView: TableAdapterView? + var container: ContainerController? + + var container2HeaderView: PlayMusicItGribView? + var container2TableView: TableAdapterView? + var container2: ContainerController? + var box: Bool = false + var count: Int = 0 + + + + var hideFooterView: PlaylistFooterPlayView? + /// Description + /// + /// + /// + override func viewDidDisappear(_ animated: Bool) { + super.viewDidDisappear(animated) + + // Remove the subviews ContainerController + stopTimer() + ViewCallsPlayer.shared.stop() + } + + override func viewDidLoad() { + super.viewDidLoad() + + + self.navBarHide = true + +// let color1 = #colorLiteral(red: 0.1254901961, green: 0.1294117647, blue: 0.1568627451, alpha: 1) +// let color2 = #colorLiteral(red: 0.07450980392, green: 0.08235294118, blue: 0.1137254902, alpha: 1) + let color3 = #colorLiteral(red: 0.1176470588, green: 0.1215686275, blue: 0.137254902, alpha: 1) + + title = "PlayMusic" + view.backgroundColor = color3 + + let img1 = #imageLiteral(resourceName: "imgPlaylistLandscape") + + + + let imgg = #imageLiteral(resourceName: "iconSportCatalogStars") + let imgg2 = #imageLiteral(resourceName: "iconSportCatalog1") + + let imgg11 = #imageLiteral(resourceName: "imgSportCatalogProduct1") + let imgg12 = #imageLiteral(resourceName: "imgSportCatalogProduct2") + let imgg13 = #imageLiteral(resourceName: "imgSportCatalogProduct3") + let imgg14 = #imageLiteral(resourceName: "imgSportCatalogProduct4") + + + + var itemsFilter: [CollectionAdapterItem] = [] + itemsFilter.append( SportTagFilterItem(state: .init())) + itemsFilter.append( SportTagSizeColorItem(state: .init(index: 1, selectted: true, icon: imgg , handlers: .init(onClickAt: { n in +// self.updateTagCellIndex(n, section: 2) + })))) + itemsFilter.append( SportTagSizeColorItem(state: .init(index: 2, selectted: true, icon: imgg2 , handlers: .init(onClickAt: { n in +// self.updateTagCellIndex(n, section: 2) + })))) + itemsFilter.append( SportTagSizeColorItem(state: .init(index: 3, selectted: false, icon: imgg2 , handlers: .init(onClickAt: { n in +// self.updateTagCellIndex(n, section: 2) + })))) + itemsFilter.append( SportTagSizeColorItem(state: .init(index: 4, selectted: false, icon: imgg , handlers: .init(onClickAt: { n in +// self.updateTagCellIndex(n, section: 2) + })))) + + + + var itemsProducts: [CollectionAdapterItem] = [] + itemsProducts.append( SportCatalogOneItem(state: .init(secondImage: imgg11, text2: "Adidas\nHuman Race", text3: "$280", handlers: .init(onClickAt: { //[weak self] in + + })))) + itemsProducts.append( SportCatalogOneItem(state: .init(secondImage: imgg12, text2: "Nike\nJoyraide", text3: "$320", handlers: .init(onClickAt: { //[weak self] in + + })))) + itemsProducts.append( SportCatalogOneItem(state: .init(secondImage: imgg13, text2: "Nike\nZoom Pegasus", text3: "$250", handlers: .init(onClickAt: { //[weak self] in + + })))) + itemsProducts.append( SportCatalogOneItem(state: .init(fav: true, secondImage: imgg14, text2: "Adidas\nStreet Ball", text3: "$160", handlers: .init(onClickAt: { //[weak self] in + + })))) + itemsProducts.append( SportCatalogOneItem(state: .init(secondImage: imgg11, text2: "Adidas\nHuman Race", text3: "$280", handlers: .init(onClickAt: {// [weak self] in + + })))) + + var tagC: [CollectionAdapterItem] = [] + tagC.append(MyCardsAddCardItem(state: .init())) + tagC.append(MyCardsOneCardItem(state: .init(visa: false))) + tagC.append(MyCardsOneCardItem(state: .init(visa: true))) + + var tagR: [CollectionAdapterItem] = [] + tagR.append(MyCardsAddonsItem(state: .init())) + tagR.append(MyCardsAddonsItem(state: .init())) + tagR.append(MyCardsAddonsItem(state: .init())) + tagR.append(MyCardsAddonsItem(state: .init())) + + let insets = CollectionAdapterInsets(minSpacing: CollectionAdapterMinSpacing(cell: 16, line: 16), insets: .init(top: 16, left: 21, bottom: 16, right: 21)) + + let insets2 = CollectionAdapterInsets(minSpacing: CollectionAdapterMinSpacing(cell: 16, line: 16), insets: .init(top: 16, left: 28, bottom: 16, right: 28)) + + + + + + var items: [TableAdapterItem] = [] + items.append( PlaylistTitleItem(state: .init(titleText: "New Releases", subtitleText: "More") ) ) + items.append( PlaylistCollectionsItem(state: .init(firstImage: img1, secondImage: img1))) + + items.append( PlaylistTitleItem(state: .init(titleText: "Likes Views", subtitleText: "More") ) ) + +// items.append(MyCardsTitileItem(state: .init())) + items.append(MyCardsCollectionItem(state: .init(items: tagC, insets: insets))) + items.append(MyCardsCollAddonsItem(state: .init(items: tagR, insets: insets2))) + + items.append( PlaylistTitleItem(state: .init(titleText: "Recommendations", subtitleText: "More") ) ) + +// items.append( SportCatalogTitileItem(state: .init() ) ) + items.append( SportCatalogFilterItem(state: .init(items: itemsFilter, insets: .init(minSpacing: .init(cell: 16, line: 16), insets: .init(top: 16, left: 32, bottom: 10, right: 32))) ) ) + + items.append( SportCatalogAllItem(state: .init(items: itemsProducts, insets: .init(minSpacing: .init(cell: 0, line: 16), insets: .init(top: 11, left: 32, bottom: 11, right: 32))) ) ) + + + tableView.set(items: items, animated: true) + + main(delay: 0.25) { + self.music(next: true) + self.music(play: true, updatePlay: true, next: true) +// main(delay: 0.25) { +// self.music(play: true, updatePlay: false) +// } +// main(delay: 0.5) { +// self.music(play: true, updatePlay: true) +// } + } +// main(delay: 2.5) { +// self.music(play: false, updatePlay: false) +// } +// self.music(play: true, next: true) + // let titleView = PlaylistTitleCell() + // titleView.frame = CGRect(x: 0, y: 0, width: ScreenSize.width, height: 148) + // view.addSubview(titleView) + // + // + // let titleView2 = PlaylistCollectionsCell() + // titleView2.frame = CGRect(x: 0, y: 0, width: ScreenSize.width, height: 162) + // view.addSubview(titleView2) + + + + + + var items2: [TableAdapterItem] = [] + items2.append( PlayMusicItItem(state: .init(handlers: .init( + onPlayAt: { play in + self.music(play: play) + }, onFastForwardAt: { type in + + self.music(next: type == .right) + self.music(play: true, next: true) + + }, onMoreAt: { + self.container?.move(type: .top) + }, onClickAt: { + + self.container2?.move(type: .top) + + self.container?.move(type: .hide) + }, onTimeAt: { time in +// self.stopTimer() +// self.music(play: false) + +// self.music(play: true, interval: time) + }))) ) + let header2 = PlayMusicItGribView() + self.container2HeaderView = header2 + + + let gradient = PlayMusicItGradientView() + + let ccc2 = addContainer(position: .init(top: 0, bottom: 118), radius: 0, items: items2, delegate: self, addBackShadow: true, header: header2, back: gradient) + + self.container2TableView = ccc2.1 +// self.container2TableView?.clipsToBounds = false +// self.container2?.set(movingEnabled: false) + self.container2 = ccc2.0 + self.container2?.view.backgroundColor = .clear + +// ccc2.0.view.contentView?.insertSubview(ccc2.0.backView, at: 0) + + + self.container2?.move(type: .hide) + main(delay: 0.15) { + self.container2?.move(type: .hide ) + } + self.container2?.move(type: .hide) + + main(delay: 0.5) { + self.container2?.move(type: .bottom ) + } + + containers.append(ccc2.0) + + + + + addContainerr(position: .init(top: 148, middle: 350/*, bottom: 100*/)) + + self.container?.move(type: .hide) + self.container?.move(type: .bottom ) + main(delay: 0.05) { + self.container?.move(type: .bottom ) + } + + +// let fr2 = CGRect(x: 0, y: ScreenSize.height - 98, width: ScreenSize.width, height: 98) +// let footer = PlaylistFooterPlayView() +// footer.frame = fr2 +// view.addSubview(footer) +// hideFooterView = footer +// hideFooterView?.clickCallback = { +// +// if (self.containers.count != 0) { +// +// self.container2?.move(type: .top) +// +// } +// } +// self.hideFooterView?.alpha = 0 + + + + + } + + func music(next: Bool) { + + if self.count == 0 { + ViewCallsPlayer.shared.stop() + ViewCallsPlayer.shared.play( .none ) + ViewCallsPlayer.shared.pause() + } + + if next { + self.count = self.count + 1 + if self.count > musicItems.count { + self.count = 1 + } + } else if !next { + self.count = self.count - 1 + if self.count < 1 { + self.count = musicItems.count + } + } + + + ViewCallsPlayer.shared.stop() +// let typee = ViewCallsPlayerType(rawValue: self.count) ?? .disclosure_you_me +// if typee == .none { +// ViewCallsPlayer.shared.stop() +// } else { +// ViewCallsPlayer.shared.play( typee ) +// } + } + + + func music(play: Bool, updatePlay: Bool? = nil, next: Bool = false, interval: CGFloat? = nil) { + if play { + let typee = ViewCallsPlayerType(rawValue: self.count) ?? .none + + if next { ViewCallsPlayer.shared.play( typee ) } + else if let _ = interval { +// ViewCallsPlayer.shared.play(interval: interval) +// ViewCallsPlayer.shared.play() +// ViewCallsPlayer.shared.avPlayer?.currentTime = interval + } + else { ViewCallsPlayer.shared.play() } + + + if let u = updatePlay { + self.updatePlayerCell(play: u) + } + + self.startTimer() + + } else { + + if let u = updatePlay { + self.updatePlayerCell(play: u) + } + + ViewCallsPlayer.shared.pause() + + + self.stopTimer() + } + } + + private func startTimer() { + if timer == nil { + timer = Timer.scheduledTimer(withTimeInterval: timerUpdateInterval, + repeats: true) { [weak self] _ in + guard let strongSelf = self else { return } + main { + + strongSelf.updatePlayerCell() + } + } + } + } + + private func updatePlayerCell(play: Bool? = nil) { + let typee = ViewCallsPlayerType(rawValue: self.count) ?? .none + + let t1 = (ViewCallsPlayer.shared.avPlayer?.duration ?? 0) + let t2 = (ViewCallsPlayer.shared.avPlayer?.currentTime ?? 0) + + // let v3 = (ViewCallsPlayer.shared.avPlayer?.volume ?? 0) + + if t1 == t2 { + self.music(next: true) + self.music(play: true, next: true) + + return + } + + let vol = AVAudioSession.sharedInstance().outputVolume + + let time = String(format: "%02d:%02d", ((Int)((t2))) / 60, ((Int)((t2))) % 60 ) + + // let remainingTime: CGFloat = (ViewCallsPlayer.shared.avPlayer?.duration ?? 0) - (ViewCallsPlayer.shared.avPlayer?.currentTime ?? 0) + + if let cell = self.container2TableView?.cellForRow(at: .init(row: 0, section: 0)) as? PlayMusicItCell { + cell.box = self.box + cell.data?.state.type = typee + cell.data?.state.duration = t1 + cell.data?.state.currentTime = t2 + cell.data?.state.volume = vol + cell.data?.state.time = time + if let play = play { + cell.data?.state.play = play + } + cell.updateImage() + } + } + + + private func stopTimer() { + timer?.invalidate() + timer = nil + } + + func addContainerr(position: ContainerPosition) { + + let layoutC = ContainerLayout() + layoutC.positions = position // + layoutC.insets = .init(right: 0, left: 0) + let container = ContainerController(addTo: self, layout: layoutC) + container.view.cornerRadius = 22 + container.view.addShadow() + container.view.tag = 12 + container.delegate = self + // let shadowColor = UIColor.black.withAlphaComponent(0.1).cgColor + + container.view.layer.shadowOpacity = Float(0.20) + container.view.layer.shadowOffset = .init(width: 0, height: 13) + container.view.layer.shadowRadius = 30.0 + container.view.layer.shadowColor = UIColor.black.cgColor + + let fr = CGRect(x: 0, y: 0, width: ScreenSize.width, height: 77) + let header = PlaylistHeaderView() + header.frame = fr + container.add(headerView: header) + + + // footer.frame = fr2 +// let fr2 = CGRect(x: 0, y: 0, width: ScreenSize.width, height: 98) +// let footer = PlaylistFooterPlayView() +// footer.frame = fr2 +// +// footer.clickCallback = { +// +// if (self.containers.count != 0) { +// +// self.container2?.move(type: .top) +// +// } +// } +// +// container.add(footerView: footer) + + + + // var imgHeader = UIImage(named: "imgWalletsHeader2")?.withTintColor(color, renderingMode: .alwaysTemplate) + + let color1 = #colorLiteral(red: 0.07450980392, green: 0.08235294118, blue: 0.1137254902, alpha: 1) + + // var header = UIImageView(frame: CGRect(x: 0, y: 0, width: ScreenSize.width - 23 - 23 , height: 680)) // + // header.image = imgHeader + // header.tintColor = color + // + // // container.view.addSubview(header) // + // container.view.insertSubview(header, at: 0) + container.view.backgroundColor = color1 + // container.view.mask = header + + // container.add(headerView: header) + // container.view.backgroundColor = color + + let table = TableAdapterView(frame: CGRect(x: 0, y: 0, width: ContainerDevice.width, height: 0), style: .plain) + table.indicatorStyle = .default + // container.add(scrollView: addCollectionView()) + + self.containerTableView = table + self.container = container + +// let img1 = #imageLiteral(resourceName: "imgPlaylistMain") +// let img2 = #imageLiteral(resourceName: "imgPlaylistFlume") + + + + var items: [TableAdapterItem] = [] + + self.musicItems.forEach { type in + items.append( PlaylistOneItem(state: .init(type: type, handlers: .init(onClickAt: { selType in + + +// self.music(next: type == .right) + self.count = selType.rawValue + ViewCallsPlayer.shared.stop() + self.music(play: true, next: true) + + }))) ) + } + + table.set(items: items) +// [ +// PlaylistOneItem(state: .init(firstImage: ViewCallsPlayer.getImage( playerType), subtitleText: "Flume", text2: "What you need", text3: "4:10")), +// PlaylistOneItem(state: .init(firstImage: img2, subtitleText: "Martin Ikin", text2: "Headnoise", text3: "4:10")), +// +// PlaylistOneItem(state: .init(firstImage: img1, subtitleText: "ZHU", text2: "Generationwhy", text3: "59:14")), +// +// PlaylistOneItem(state: .init(firstImage: img2, subtitleText: "Flume", text2: "What you need", text3: "4:10")), +// PlaylistOneItem(state: .init(firstImage: img2, subtitleText: "Martin Ikin", text2: "Headnoise", text3: "4:10")), +// PlaylistOneItem(state: .init(firstImage: img2, subtitleText: "Flume", text2: "What you need", text3: "4:10")), +// +// PlaylistOneItem(state: .init(firstImage: img1, subtitleText: "Flume", text2: "What you need", text3: "4:10")), +// PlaylistOneItem(state: .init(firstImage: img1, subtitleText: "Martin Ikin", text2: "Headnoise", text3: "4:10")), +// PlaylistOneItem(state: .init(firstImage: img2, subtitleText: "Flume", text2: "What you need", text3: "4:10")) +// ] + + + container.add(scrollView: table) + // container.move(type: .bottom) + + + // main(delay: 1.05) { + // container.move(type: .middle + // ) + // } + + containers.append(container) + + // self.view.addSubview(self.footerImg) + } + + + override func containerControllerMove(_ containerController: ContainerController, position: CGFloat, type: ContainerMoveType, animation: Bool) { + if animation { + + if containerController == self.container2 { + + + + self.headerUpdate(open: type == .bottom, height: 0, grib: type == .top) + +// UIView.animate(withDuration: 2) { + +// self.headerUpdate(open: type == .bottom ) + + self.box = type == .bottom + + if let cell = self.container2TableView?.cellForRow(at: .init(row: 0, section: 0)) as? PlayMusicItCell { + cell.box = self.box + cell.updateImage() + } + +// self.container2?.set(movingEnabled: ((type == .top) && self.box)) + +// } + main(delay: 0.05) { + if type == .bottom { + self.container?.move(type: .hide) + } + } + } + else if containerController == self.container { + + if type == .top || type == .middle { + + self.headerUpdate(open: type == .top, height: 54.0, grib: self.container2?.moveType == .top) + + + self.box = type == .top + + // main(delay: 0.05) { + + if let cell = self.container2TableView?.cellForRow(at: .init(row: 0, section: 0)) as? PlayMusicItCell { + cell.box = self.box + cell.updateImage() + } + + + self.container2?.set(movingEnabled: !((type == .top) && self.box)) + +// if type == .middle { +// self.container2?.move(type: .bottom) +// +// } + // } + } else if type == .bottom { + self.box = (self.container2?.moveType == .bottom) || ((self.container2?.moveType == .top) && (type == .top)) + + if let cell = self.container2TableView?.cellForRow(at: .init(row: 0, section: 0)) as? PlayMusicItCell { + cell.box = self.box + cell.updateImage() + } + + self.container2?.set(movingEnabled: !self.box) + } + + +// + + + + + } + } + } + + func headerUpdate(open: Bool, height: CGFloat = 54.0, grib: Bool) { + +// main { + + let heightt = open ? height : PlayMusicItGribView.rrect().height + if self.container2HeaderView?.height != heightt { + self.container2HeaderView?.height = heightt + self.container2?.headerView?.height = heightt + UIView.animate(withDuration: 0.15) { + + self.container2?.calculationViews() + } + } +// if grib { + UIView.animate(withDuration: 0.75) { + self.container2HeaderView?.grib(visible: !open, open: grib) + } +// } + + +// if open { +//// self.container2?.headerView?.height = 15 +// +//// if let headerView = self.container2HeaderView, self.container2?.headerView == nil { +//// headerView.height = 15 +//// self.container2?.add(headerView: headerView) +//// +//// } +// +// self.container2?.removeHeaderView() +// // self.container2?.view.alpha = 0 +// // self.container?.move(type: .top) +// } else { +// +// +// +// if let headerView = self.container2HeaderView, self.container2?.headerView == nil { +// self.container2?.add(headerView: headerView) +// +// } +// +// if self.container2?.headerView != nil { +// self.container2?.headerView?.height = PlayMusicItGribView.rrect().height +// } +// +// +// // self.container2?.view.alpha = 1 +// } +// } + } + +} diff --git a/Example/ContainerControllerSwift/PlayMusic/TimerUtils.swift b/Example/ContainerControllerSwift/PlayMusic/TimerUtils.swift new file mode 100644 index 0000000..ef85253 --- /dev/null +++ b/Example/ContainerControllerSwift/PlayMusic/TimerUtils.swift @@ -0,0 +1,69 @@ +// +// TimerUtils.swift +// irbis +// +// Created by lan on 08.10.2021. +// Copyright © 2021 ИТСофт. All rights reserved. +// + +import Foundation + +class TimerControl { + var running: Bool { timer != nil } + private var timer: Timer? + private var ti: TimeInterval + private var repeats: Bool + private var target: Any? + private var selector: Selector? + private(set) var startTime: Date? + + + init(_ ti: TimeInterval, repeats: Bool = true) { + self.ti = ti + self.repeats = repeats + } + + init(_ ti: TimeInterval, repeats: Bool = true, target: Any, selector: Selector) { + self.ti = ti + self.repeats = repeats + self.target = target + self.selector = selector + } + + func start(_ block: @escaping (Timer) -> Void) { + stop() + startTime = Date() + timer = Timer.scheduledTimer(withTimeInterval: ti, repeats: repeats, block: block) + } + + func start(target : Any, selector : Selector) { + stop() + startTime = Date() + timer = Timer.scheduledTimer(timeInterval: ti, target: target, selector: selector, userInfo: nil, repeats: repeats) + } + + func start() { + guard let target = target, let selector = selector else { return } + start(target: target, selector: selector) + } + + func stop() { + guard let _ = timer else { return } + startTime = nil + timer?.invalidate() + timer = nil + } +} + +extension TimerControl { + static func start(ti: TimeInterval, repeats: Bool, block: @escaping (Timer) -> Void) -> TimerControl { + let timerControl = TimerControl(ti, repeats: repeats) + timerControl.start(block) + return timerControl + } + static func start(ti: TimeInterval, repeats: Bool, target : Any, selector : Selector) -> TimerControl { + let timerControl = TimerControl(ti, repeats: repeats) + timerControl.start(target: target, selector: selector) + return timerControl + } +} diff --git a/Example/ContainerControllerSwift/PlayMusic/ViewCallsPlayer.swift b/Example/ContainerControllerSwift/PlayMusic/ViewCallsPlayer.swift new file mode 100644 index 0000000..b6f5947 --- /dev/null +++ b/Example/ContainerControllerSwift/PlayMusic/ViewCallsPlayer.swift @@ -0,0 +1,244 @@ +// +// ViewCallsPlayer.swift +// irbis +// +// Created by Aleksandr Lobyncev on 14.03.2022. +// Copyright © 2022 ИТСофт. All rights reserved. +// +import Foundation +import AVFoundation +import Speech + +//тип проигрываемой мелодии +@objc enum ViewCallsPlayerType: Int { + //отсутствует + case none + case the_audio_bar + case funky_house_classic + case big_miz_aador + case disclosure_you_me + case disclosure_ware_running + case camelphat_dropit + case claptone_music_got_me + case flume_greatest_view + case myselor_neurolife + case benno_blome_botha +} + +@objcMembers +class ViewCallsPlayer: NSObject { + static let shared = ViewCallsPlayer() + + static private let disclosure_you_me = "Disclosure_You_Me.mp3" + static private let disclosure_ware_running = "Disclosure_Ware_Running.mp3" + static private let flume_greatest_view = "Flume_Greatest_View.mp3" + static private let flume_sleepless = "Flume_Sleepless.mp3" + static private let camelphat_dropit = "CamelPhat_DropIt.mp3" + + + static private let the_audio_bar = "the_audio_bar.mp3" + static private let funky_house_classic = "funky_house_classic.mp3" + static private let big_miz_aador = "big_miz_aador.mp3" + static private let claptone_music_got_me = "claptone_music_got_me.mp3" + static private let myselor_neurolife = "myselor_neurolife.mp3" + static private let benno_blome_botha = "benno_blome_botha.mp3" + +// static private let callingFileName = "call_ring_ringing.wav" +// static private let busyFileName = "call_ring_busy.wav" +// static private let holdFileName = "call_hold.wav" +// static private let flume_sleepless = "call_ring_second_alert.wav" +// static private let errorAlertFileName = "call_ring_error_alert.wav" + + //тип мелодии + private(set) var playerType: ViewCallsPlayerType = .none + var avPlayer: AVAudioPlayer? + + func play(interval: TimeInterval? = nil) { + guard let avPlayer = avPlayer else { return } + print("viewCallsPlayer pause") + if let interval = interval { + avPlayer.play(atTime: interval) + + } else { avPlayer.play() } + } + + //проиграть + func play(_ newPlayerType: ViewCallsPlayerType) { + guard playerType != newPlayerType else { return } + playerType = newPlayerType + if playerType == .none { + stop() + } else { + prepareAndPlay() + } + } + + //остановить + func stop() { + guard let avPlayer = avPlayer else { return } + print("viewCallsPlayer stop") + avPlayer.stop() + self.avPlayer = nil + } + + func pause() { + guard let avPlayer = avPlayer else { return } + print("viewCallsPlayer pause") + avPlayer.pause() + } + + //проиграть второй входящий + func playSecondIncoming() { + let url = URL(fileURLWithResource: ViewCallsPlayer.flume_sleepless) + guard let player = try? AVAudioPlayer(contentsOf: url) else { return } + player.numberOfLoops = 0 + player.volume = 1 + player.prepareToPlay() + player.play() + } + + + class func getSubtitle(_ playerType: ViewCallsPlayerType) -> String { + + switch playerType { + + + case .disclosure_you_me: + return "You Me" + case .flume_greatest_view: + return "Greatest View" + case .disclosure_ware_running: + return "Ware Running" + case .camelphat_dropit: + return "Drop It" + case .the_audio_bar: return "Harlequins" + case .funky_house_classic: return "ID Mix" + case .big_miz_aador: return "Renegade" + case .claptone_music_got_me: return "The Music Got Me (Darius Syrossian Remix)" + case .myselor_neurolife: return "Neurolife" + case .benno_blome_botha: return "Abotha" + default: + return "" + } + } + + + class func getTitle(_ playerType: ViewCallsPlayerType) -> String { + + switch playerType { + + + case .disclosure_you_me: + return "Disclosure" + case .flume_greatest_view: + return "Flume" + case .disclosure_ware_running: + return "Disclosure" + case .camelphat_dropit: + return "CamelPhat" + case .the_audio_bar: return "The Audio Bar" + case .funky_house_classic: return "Funky House Classic vinyl" + case .big_miz_aador: return "Big Miz, A.D.O.R." + case .claptone_music_got_me: return "Claptone" + case .myselor_neurolife: return "Myselor" + case .benno_blome_botha: return "Benno Blome" + default: + return "" + } + } + + class func getImage(_ playerType: ViewCallsPlayerType) -> UIImage? { + + let img1 = #imageLiteral(resourceName: "img_Disclosure_You_Me") + let img2 = #imageLiteral(resourceName: "img_Flume_Greatest_View") + let img3 = #imageLiteral(resourceName: "img_Disclosure_Ware_Running") + let img4 = #imageLiteral(resourceName: "img_CamelPhat_DropIt") + + + let img5 = #imageLiteral(resourceName: "img_the_audio_bar") + let img6 = #imageLiteral(resourceName: "img_funky_house_classic") + let img7 = #imageLiteral(resourceName: "img_big_miz_aador") + let img8 = #imageLiteral(resourceName: "img_claptone_music_got_me") + let img9 = #imageLiteral(resourceName: "img_myselor_neurolife") + let img10 = #imageLiteral(resourceName: "img_benno_blome_botha") + + switch playerType { + + + case .disclosure_you_me: + return img1 + case .flume_greatest_view: + return img2 + case .disclosure_ware_running: + return img3 + case .camelphat_dropit: + return img4 + case .the_audio_bar: return img5 + case .funky_house_classic: return img6 + case .big_miz_aador: return img7 + case .claptone_music_got_me: return img8 + case .myselor_neurolife: return img9 + case .benno_blome_botha: return img10 + default: + return nil + } + } + + + private func prepareAndPlay() { + stop() + let url: URL + switch playerType { + case .disclosure_you_me: + print("viewCallsPlayer disclosure_you_me") + url = URL(fileURLWithResource: ViewCallsPlayer.disclosure_you_me) + case .flume_greatest_view: + print("viewCallsPlayer flume_greatest_view") + url = URL(fileURLWithResource: ViewCallsPlayer.flume_greatest_view) + case .disclosure_ware_running: + print("viewCallsPlayer disclosure_ware_running") + url = URL(fileURLWithResource: ViewCallsPlayer.disclosure_ware_running) + case .camelphat_dropit: + print("viewCallsPlayer camelphat_dropit") + url = URL(fileURLWithResource: ViewCallsPlayer.camelphat_dropit) + + case .the_audio_bar: + print("viewCallsPlayer the_audio_bar") + url = URL(fileURLWithResource: ViewCallsPlayer.the_audio_bar) + case .funky_house_classic: + print("viewCallsPlayer funky_house_classic") + url = URL(fileURLWithResource: ViewCallsPlayer.funky_house_classic) + case .big_miz_aador: + print("viewCallsPlayer big_miz_aador") + url = URL(fileURLWithResource: ViewCallsPlayer.big_miz_aador) + case .claptone_music_got_me: + print("viewCallsPlayer claptone_music_got_me") + url = URL(fileURLWithResource: ViewCallsPlayer.claptone_music_got_me) + case .myselor_neurolife: + print("viewCallsPlayer myselor_neurolife") + url = URL(fileURLWithResource: ViewCallsPlayer.myselor_neurolife) + case .benno_blome_botha: + print("viewCallsPlayer benno_blome_botha") + url = URL(fileURLWithResource: ViewCallsPlayer.benno_blome_botha) + + default: + return + } + + + + guard let player = try? AVAudioPlayer(contentsOf: url) else { return } + avPlayer = player + + player.numberOfLoops = -1 + player.volume = 1 + player.prepareToPlay() + player.play() + } +} + +extension URL { + init(fileURLWithResource resource: String) { + self.init(fileURLWithPath: "\(Bundle.main.resourcePath ?? "")/\(resource)") + } +} diff --git a/Example/ContainerControllerSwift/PlayMusic/benno_blome_botha.jpg b/Example/ContainerControllerSwift/PlayMusic/benno_blome_botha.jpg new file mode 100644 index 0000000..9c4370f Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/benno_blome_botha.jpg differ diff --git a/Example/ContainerControllerSwift/PlayMusic/benno_blome_botha.mp3 b/Example/ContainerControllerSwift/PlayMusic/benno_blome_botha.mp3 new file mode 100755 index 0000000..23b9ab1 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/benno_blome_botha.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/big_miz_aador.jpg b/Example/ContainerControllerSwift/PlayMusic/big_miz_aador.jpg new file mode 100644 index 0000000..19482b4 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/big_miz_aador.jpg differ diff --git a/Example/ContainerControllerSwift/PlayMusic/big_miz_aador.mp3 b/Example/ContainerControllerSwift/PlayMusic/big_miz_aador.mp3 new file mode 100755 index 0000000..dedfa8f Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/big_miz_aador.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/claptone_music_got_me.jpg b/Example/ContainerControllerSwift/PlayMusic/claptone_music_got_me.jpg new file mode 100644 index 0000000..c676d1a Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/claptone_music_got_me.jpg differ diff --git a/Example/ContainerControllerSwift/PlayMusic/claptone_music_got_me.mp3 b/Example/ContainerControllerSwift/PlayMusic/claptone_music_got_me.mp3 new file mode 100755 index 0000000..df03124 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/claptone_music_got_me.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/funky_house_classic.jpg b/Example/ContainerControllerSwift/PlayMusic/funky_house_classic.jpg new file mode 100644 index 0000000..cdf5225 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/funky_house_classic.jpg differ diff --git a/Example/ContainerControllerSwift/PlayMusic/funky_house_classic.mp3 b/Example/ContainerControllerSwift/PlayMusic/funky_house_classic.mp3 new file mode 100755 index 0000000..818134a Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/funky_house_classic.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/img_CamelPhat_DropIt.jpg b/Example/ContainerControllerSwift/PlayMusic/img_CamelPhat_DropIt.jpg new file mode 100644 index 0000000..4c57745 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/img_CamelPhat_DropIt.jpg differ diff --git a/Example/ContainerControllerSwift/PlayMusic/img_Disclosure_Ware_Running.jpg b/Example/ContainerControllerSwift/PlayMusic/img_Disclosure_Ware_Running.jpg new file mode 100644 index 0000000..eee56a6 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/img_Disclosure_Ware_Running.jpg differ diff --git a/Example/ContainerControllerSwift/PlayMusic/img_Disclosure_You_Me.jpg b/Example/ContainerControllerSwift/PlayMusic/img_Disclosure_You_Me.jpg new file mode 100644 index 0000000..9eb1eb1 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/img_Disclosure_You_Me.jpg differ diff --git a/Example/ContainerControllerSwift/PlayMusic/img_Flume_Greatest_View.jpg b/Example/ContainerControllerSwift/PlayMusic/img_Flume_Greatest_View.jpg new file mode 100644 index 0000000..b996d35 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/img_Flume_Greatest_View.jpg differ diff --git a/Example/ContainerControllerSwift/PlayMusic/myselor_neurolife.jpg b/Example/ContainerControllerSwift/PlayMusic/myselor_neurolife.jpg new file mode 100644 index 0000000..a5d70db Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/myselor_neurolife.jpg differ diff --git a/Example/ContainerControllerSwift/PlayMusic/myselor_neurolife.mp3 b/Example/ContainerControllerSwift/PlayMusic/myselor_neurolife.mp3 new file mode 100755 index 0000000..59ba1f2 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/myselor_neurolife.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/the_audio_bar.mp3 b/Example/ContainerControllerSwift/PlayMusic/the_audio_bar.mp3 new file mode 100755 index 0000000..abe47e8 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/the_audio_bar.mp3 differ diff --git a/Example/ContainerControllerSwift/PlayMusic/the_audio_bar.png b/Example/ContainerControllerSwift/PlayMusic/the_audio_bar.png new file mode 100644 index 0000000..b331566 Binary files /dev/null and b/Example/ContainerControllerSwift/PlayMusic/the_audio_bar.png differ diff --git a/Example/ContainerControllerSwift/Playlist/PlaylistOneCell/PlaylistOneCell.swift b/Example/ContainerControllerSwift/Playlist/PlaylistOneCell/PlaylistOneCell.swift index 656120d..88ffccb 100644 --- a/Example/ContainerControllerSwift/Playlist/PlaylistOneCell/PlaylistOneCell.swift +++ b/Example/ContainerControllerSwift/Playlist/PlaylistOneCell/PlaylistOneCell.swift @@ -5,6 +5,7 @@ import ContainerControllerSwift extension PlaylistOneItem { struct State { + var type: ViewCallsPlayerType = .none var firstImage: UIImage? var subtitleText: String? var text2: String? @@ -12,7 +13,8 @@ extension PlaylistOneItem { var handlers: Handlers = .init() } struct Handlers { - var onClickAt: (()->(Void))? + + var onClickAt: ((_ selType: ViewCallsPlayerType)->(Void))? } } @@ -67,25 +69,59 @@ class PlaylistOneCell: TableAdapterCell { @IBOutlet private weak var label3: UILabel? @IBOutlet override var selectedView: UIView? { didSet { } } - @IBOutlet var cardView: UIView? + @IBOutlet var ccardView: UIView? @IBOutlet var button: UIButton? override func awakeFromNib() { separator(hide: true) - button?.tapHideAnimation( - view: cardView, - type: .alpha(0.5), - callback: { [weak self] type in - if type == .touchUpInside { - self?.data?.state.handlers.onClickAt?() - } - } - ) + + button?.tapClassic({ [weak self] down in + UIView.animate(withDuration: down ? 0.0 : 0.35) { + self?.ccardView?.alpha = down ? 0.2 : 0.0 + } + if !down { + + if let playerType = self?.data?.state.type { + self?.data?.state.handlers.onClickAt?(playerType) + } + } + }) + +// button?.tapHideAnimation( +// view: cardView, +// type: .alpha(0.5), +// callback: { [weak self] type in +// if type == .touchUpInside { +// self?.data?.state.handlers.onClickAt?() +// } +// } +// ) } override func fill(data: TableAdapterCellData?) { guard let data = data as? PlaylistOneCellData else { return } self.data = data + + + if let playerType = self.data?.state.type { + + + let firstImage = ViewCallsPlayer.getImage( playerType) + let subtitleText = ViewCallsPlayer.getTitle( playerType) + let text2 = ViewCallsPlayer.getSubtitle( playerType) + let text3 = "4:10" + + self.data?.state.firstImage = firstImage + self.data?.state.subtitleText = subtitleText + self.data?.state.text2 = text2 + self.data?.state.text3 = text3 + + firstImageView?.image = firstImage + subtitleLabel?.text = subtitleText + label2?.text = text2 + label3?.text = text3 + } + firstImageView?.image = data.state.firstImage subtitleLabel?.text = data.state.subtitleText label2?.text = data.state.text2 diff --git a/Example/ContainerControllerSwift/Playlist/PlaylistOneCell/PlaylistOneCell.xib b/Example/ContainerControllerSwift/Playlist/PlaylistOneCell/PlaylistOneCell.xib index dac6452..7fdb650 100644 --- a/Example/ContainerControllerSwift/Playlist/PlaylistOneCell/PlaylistOneCell.xib +++ b/Example/ContainerControllerSwift/Playlist/PlaylistOneCell/PlaylistOneCell.xib @@ -52,14 +52,16 @@ -