diff --git a/DynamicTodayExtensionExample/DynamicTodayExtensionExample.xcodeproj/project.pbxproj b/DynamicTodayExtensionExample/DynamicTodayExtensionExample.xcodeproj/project.pbxproj index 062659b..a2cebaa 100644 --- a/DynamicTodayExtensionExample/DynamicTodayExtensionExample.xcodeproj/project.pbxproj +++ b/DynamicTodayExtensionExample/DynamicTodayExtensionExample.xcodeproj/project.pbxproj @@ -19,13 +19,11 @@ 305233411D8170B20070AAFE /* DynamicTodayViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 305233401D8170B20070AAFE /* DynamicTodayViewController.m */; }; 305233431D8170C60070AAFE /* Image.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 305233421D8170C60070AAFE /* Image.xcassets */; }; 305233671D8170E50070AAFE /* FSCalendar+Deprecated.m in Sources */ = {isa = PBXBuildFile; fileRef = 305233481D8170E50070AAFE /* FSCalendar+Deprecated.m */; }; - 305233681D8170E50070AAFE /* FSCalendar+IBExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 3052334A1D8170E50070AAFE /* FSCalendar+IBExtension.m */; }; 305233691D8170E50070AAFE /* FSCalendar.m in Sources */ = {isa = PBXBuildFile; fileRef = 3052334C1D8170E50070AAFE /* FSCalendar.m */; }; 3052336A1D8170E50070AAFE /* FSCalendarAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 3052334E1D8170E50070AAFE /* FSCalendarAnimator.m */; }; 3052336B1D8170E50070AAFE /* FSCalendarAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = 305233501D8170E50070AAFE /* FSCalendarAppearance.m */; }; 3052336C1D8170E50070AAFE /* FSCalendarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 305233521D8170E50070AAFE /* FSCalendarCell.m */; }; 3052336D1D8170E50070AAFE /* FSCalendarCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 305233541D8170E50070AAFE /* FSCalendarCollectionView.m */; }; - 3052336F1D8170E50070AAFE /* FSCalendarEventIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 305233591D8170E50070AAFE /* FSCalendarEventIndicator.m */; }; 305233701D8170E50070AAFE /* FSCalendarFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3052335B1D8170E50070AAFE /* FSCalendarFlowLayout.m */; }; 305233711D8170E50070AAFE /* FSCalendarHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3052335D1D8170E50070AAFE /* FSCalendarHeader.m */; }; 305233721D8170E50070AAFE /* FSCalendarScopeHandle.m in Sources */ = {isa = PBXBuildFile; fileRef = 3052335F1D8170E50070AAFE /* FSCalendarScopeHandle.m */; }; @@ -78,8 +76,6 @@ 305233401D8170B20070AAFE /* DynamicTodayViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DynamicTodayViewController.m; sourceTree = ""; }; 305233421D8170C60070AAFE /* Image.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Image.xcassets; sourceTree = ""; }; 305233481D8170E50070AAFE /* FSCalendar+Deprecated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+Deprecated.m"; sourceTree = ""; }; - 305233491D8170E50070AAFE /* FSCalendar+IBExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FSCalendar+IBExtension.h"; sourceTree = ""; }; - 3052334A1D8170E50070AAFE /* FSCalendar+IBExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+IBExtension.m"; sourceTree = ""; }; 3052334B1D8170E50070AAFE /* FSCalendar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendar.h; sourceTree = ""; }; 3052334C1D8170E50070AAFE /* FSCalendar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendar.m; sourceTree = ""; }; 3052334D1D8170E50070AAFE /* FSCalendarAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarAnimator.h; sourceTree = ""; }; @@ -91,8 +87,6 @@ 305233531D8170E50070AAFE /* FSCalendarCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarCollectionView.h; sourceTree = ""; }; 305233541D8170E50070AAFE /* FSCalendarCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarCollectionView.m; sourceTree = ""; }; 305233571D8170E50070AAFE /* FSCalendarDynamicHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarDynamicHeader.h; sourceTree = ""; }; - 305233581D8170E50070AAFE /* FSCalendarEventIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarEventIndicator.h; sourceTree = ""; }; - 305233591D8170E50070AAFE /* FSCalendarEventIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarEventIndicator.m; sourceTree = ""; }; 3052335A1D8170E50070AAFE /* FSCalendarFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarFlowLayout.h; sourceTree = ""; }; 3052335B1D8170E50070AAFE /* FSCalendarFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarFlowLayout.m; sourceTree = ""; }; 3052335C1D8170E50070AAFE /* FSCalendarHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarHeader.h; sourceTree = ""; }; @@ -206,9 +200,6 @@ 305233541D8170E50070AAFE /* FSCalendarCollectionView.m */, 30A33A091DB1CA640039BEA3 /* FSCalendarConstants.h */, 30A33A0A1DB1CA640039BEA3 /* FSCalendarConstants.m */, - 305233571D8170E50070AAFE /* FSCalendarDynamicHeader.h */, - 305233581D8170E50070AAFE /* FSCalendarEventIndicator.h */, - 305233591D8170E50070AAFE /* FSCalendarEventIndicator.m */, 3052335A1D8170E50070AAFE /* FSCalendarFlowLayout.h */, 3052335B1D8170E50070AAFE /* FSCalendarFlowLayout.m */, 3052335C1D8170E50070AAFE /* FSCalendarHeader.h */, @@ -219,9 +210,8 @@ 305233611D8170E50070AAFE /* FSCalendarStickyHeader.m */, 3055B1C91DA933AD002AFA13 /* FSCalendarExtensions.h */, 3055B1CA1DA933AD002AFA13 /* FSCalendarExtensions.m */, + 305233571D8170E50070AAFE /* FSCalendarDynamicHeader.h */, 305233481D8170E50070AAFE /* FSCalendar+Deprecated.m */, - 305233491D8170E50070AAFE /* FSCalendar+IBExtension.h */, - 3052334A1D8170E50070AAFE /* FSCalendar+IBExtension.m */, 305233621D8170E50070AAFE /* Info.plist */, ); name = FSCalendar; @@ -342,7 +332,6 @@ buildActionMask = 2147483647; files = ( 30A33A0B1DB1CA640039BEA3 /* FSCalendarConstants.m in Sources */, - 305233681D8170E50070AAFE /* FSCalendar+IBExtension.m in Sources */, 305233721D8170E50070AAFE /* FSCalendarScopeHandle.m in Sources */, 305233691D8170E50070AAFE /* FSCalendar.m in Sources */, 305233671D8170E50070AAFE /* FSCalendar+Deprecated.m in Sources */, @@ -351,7 +340,6 @@ 305233711D8170E50070AAFE /* FSCalendarHeader.m in Sources */, 305233701D8170E50070AAFE /* FSCalendarFlowLayout.m in Sources */, 3055B1CB1DA933AD002AFA13 /* FSCalendarExtensions.m in Sources */, - 3052336F1D8170E50070AAFE /* FSCalendarEventIndicator.m in Sources */, 3052336C1D8170E50070AAFE /* FSCalendarCell.m in Sources */, 3052336D1D8170E50070AAFE /* FSCalendarCollectionView.m in Sources */, 305233411D8170B20070AAFE /* DynamicTodayViewController.m in Sources */, diff --git a/Example/Base.lproj/Main_iPad.storyboard b/Example/Base.lproj/Main_iPad.storyboard index 09bbc0e..f9ea8f0 100644 --- a/Example/Base.lproj/Main_iPad.storyboard +++ b/Example/Base.lproj/Main_iPad.storyboard @@ -1,5 +1,5 @@ - + @@ -293,7 +293,6 @@ - diff --git a/Example/Base.lproj/Main_iPhone.storyboard b/Example/Base.lproj/Main_iPhone.storyboard index 00b4133..346c850 100644 --- a/Example/Base.lproj/Main_iPhone.storyboard +++ b/Example/Base.lproj/Main_iPhone.storyboard @@ -1,5 +1,5 @@ - + diff --git a/Example/FSCalendar.xcodeproj/project.pbxproj b/Example/FSCalendar.xcodeproj/project.pbxproj index 29f4047..1d03ba0 100644 --- a/Example/FSCalendar.xcodeproj/project.pbxproj +++ b/Example/FSCalendar.xcodeproj/project.pbxproj @@ -11,7 +11,7 @@ 30145EF11D6D754D00AA5F72 /* FSCalendarTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EE638CF51B8A1F550006DD1A /* FSCalendarTests.m */; }; 301F93451D8802D90028BEC8 /* FSCalendarExtensionTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 301F93441D8802D90028BEC8 /* FSCalendarExtensionTest.m */; }; 3031F3EF1CDEDFC500C174D7 /* ScopeHandleViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 3031F3EE1CDEDFC500C174D7 /* ScopeHandleViewController.m */; }; - 3055B1C21DA9323A002AFA13 /* FSCalendarExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3055B1C01DA9323A002AFA13 /* FSCalendarExtensions.h */; }; + 3055B1C21DA9323A002AFA13 /* FSCalendarExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3055B1C01DA9323A002AFA13 /* FSCalendarExtensions.h */; settings = {ATTRIBUTES = (Private, ); }; }; 3055B1C31DA9323A002AFA13 /* FSCalendarExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3055B1C11DA9323A002AFA13 /* FSCalendarExtensions.m */; }; 3055B1C41DA9323A002AFA13 /* FSCalendarExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3055B1C11DA9323A002AFA13 /* FSCalendarExtensions.m */; }; 3055B1C51DA9323A002AFA13 /* FSCalendarExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3055B1C11DA9323A002AFA13 /* FSCalendarExtensions.m */; }; @@ -20,9 +20,6 @@ 3065CA981CD31B81006C218D /* FSCalendarScopeHandle.m in Sources */ = {isa = PBXBuildFile; fileRef = 3065CA951CD31B81006C218D /* FSCalendarScopeHandle.m */; }; 3065CAA81CD3506A006C218D /* FSCalendar+Deprecated.m in Sources */ = {isa = PBXBuildFile; fileRef = 3065CAA61CD3506A006C218D /* FSCalendar+Deprecated.m */; }; 3065CAA91CD3506A006C218D /* FSCalendar+Deprecated.m in Sources */ = {isa = PBXBuildFile; fileRef = 3065CAA61CD3506A006C218D /* FSCalendar+Deprecated.m */; }; - 307E05B91C61EC5C0052A9B4 /* FSCalendarEventIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 307E05B71C61EC5C0052A9B4 /* FSCalendarEventIndicator.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 307E05BA1C61EC5C0052A9B4 /* FSCalendarEventIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 307E05B81C61EC5C0052A9B4 /* FSCalendarEventIndicator.m */; }; - 307E05BB1C61EC5C0052A9B4 /* FSCalendarEventIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 307E05B81C61EC5C0052A9B4 /* FSCalendarEventIndicator.m */; }; 308B58D81CC08FFA004E812D /* ButtonsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 308B58D71CC08FFA004E812D /* ButtonsViewController.m */; }; 3092253A1B905C4300123031 /* FSCalendarConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = 309225381B905C4300123031 /* FSCalendarConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3092253B1B905C4300123031 /* FSCalendarConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 309225391B905C4300123031 /* FSCalendarConstants.m */; }; @@ -32,18 +29,15 @@ 309539911C38D66C00BD37AA /* FSCalendarFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 3095398E1C38D66C00BD37AA /* FSCalendarFlowLayout.m */; }; 309A42011D992C4A004E86CB /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 309A42001D992C4A004E86CB /* Images.xcassets */; }; 30B0BA9B1B8D8BC9004B9476 /* FSCalendar.framework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = EE638CE21B8A1F550006DD1A /* FSCalendar.framework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 30B0BACF1B8D8E23004B9476 /* FSCalendar+IBExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B0BABE1B8D8E22004B9476 /* FSCalendar+IBExtension.m */; }; 30B0BAD01B8D8E23004B9476 /* FSCalendar.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B0BAC01B8D8E22004B9476 /* FSCalendar.m */; }; 30B0BAD11B8D8E23004B9476 /* FSCalendarAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B0BAC21B8D8E22004B9476 /* FSCalendarAppearance.m */; }; 30B0BAD21B8D8E23004B9476 /* FSCalendarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B0BAC41B8D8E22004B9476 /* FSCalendarCell.m */; }; 30B0BAD31B8D8E23004B9476 /* FSCalendarHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B0BAC71B8D8E22004B9476 /* FSCalendarHeader.m */; }; 30B0BAD51B8D8E23004B9476 /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 30B0BACA1B8D8E22004B9476 /* Info.plist */; }; - 30B0BAF41B8D9AC1004B9476 /* FSCalendar+IBExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B0BABE1B8D8E22004B9476 /* FSCalendar+IBExtension.m */; }; 30B0BAF61B8D9AC1004B9476 /* FSCalendarAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B0BAC21B8D8E22004B9476 /* FSCalendarAppearance.m */; }; 30B0BAF71B8D9AC1004B9476 /* FSCalendarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B0BAC41B8D8E22004B9476 /* FSCalendarCell.m */; }; 30B0BAF81B8D9AC1004B9476 /* FSCalendarHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B0BAC71B8D8E22004B9476 /* FSCalendarHeader.m */; }; 30B0BAFC1B8D9AD4004B9476 /* FSCalendar.h in Headers */ = {isa = PBXBuildFile; fileRef = 30B0BABF1B8D8E22004B9476 /* FSCalendar.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 30B0BB001B8D9B6C004B9476 /* FSCalendar+IBExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 30B0BABD1B8D8E22004B9476 /* FSCalendar+IBExtension.h */; settings = {ATTRIBUTES = (Private, ); }; }; 30B0BB011B8D9B6C004B9476 /* FSCalendarAppearance.h in Headers */ = {isa = PBXBuildFile; fileRef = 30B0BAC11B8D8E22004B9476 /* FSCalendarAppearance.h */; settings = {ATTRIBUTES = (Public, ); }; }; 30B0BB021B8D9B6C004B9476 /* FSCalendarCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 30B0BAC31B8D8E22004B9476 /* FSCalendarCell.h */; settings = {ATTRIBUTES = (Private, ); }; }; 30B0BB031B8D9B6D004B9476 /* FSCalendarDynamicHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 30B0BAC51B8D8E22004B9476 /* FSCalendarDynamicHeader.h */; settings = {ATTRIBUTES = (Private, ); }; }; @@ -115,8 +109,6 @@ 3065CA951CD31B81006C218D /* FSCalendarScopeHandle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarScopeHandle.m; sourceTree = ""; }; 3065CAA61CD3506A006C218D /* FSCalendar+Deprecated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+Deprecated.m"; sourceTree = ""; }; 30671DC71D6D574C00BCFC4E /* FSCalendarTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = FSCalendarTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 307E05B71C61EC5C0052A9B4 /* FSCalendarEventIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarEventIndicator.h; sourceTree = ""; }; - 307E05B81C61EC5C0052A9B4 /* FSCalendarEventIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarEventIndicator.m; sourceTree = ""; }; 308B58D61CC08FFA004E812D /* ButtonsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ButtonsViewController.h; sourceTree = SOURCE_ROOT; }; 308B58D71CC08FFA004E812D /* ButtonsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ButtonsViewController.m; sourceTree = SOURCE_ROOT; }; 309225381B905C4300123031 /* FSCalendarConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarConstants.h; sourceTree = ""; }; @@ -124,8 +116,6 @@ 3095398D1C38D66C00BD37AA /* FSCalendarFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarFlowLayout.h; sourceTree = ""; }; 3095398E1C38D66C00BD37AA /* FSCalendarFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarFlowLayout.m; sourceTree = ""; }; 309A42001D992C4A004E86CB /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = SOURCE_ROOT; }; - 30B0BABD1B8D8E22004B9476 /* FSCalendar+IBExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FSCalendar+IBExtension.h"; sourceTree = ""; }; - 30B0BABE1B8D8E22004B9476 /* FSCalendar+IBExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+IBExtension.m"; sourceTree = ""; }; 30B0BABF1B8D8E22004B9476 /* FSCalendar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendar.h; sourceTree = ""; }; 30B0BAC01B8D8E22004B9476 /* FSCalendar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendar.m; sourceTree = ""; }; 30B0BAC11B8D8E22004B9476 /* FSCalendarAppearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarAppearance.h; sourceTree = ""; }; @@ -235,8 +225,6 @@ 3065CA951CD31B81006C218D /* FSCalendarScopeHandle.m */, 30B0BAC31B8D8E22004B9476 /* FSCalendarCell.h */, 30B0BAC41B8D8E22004B9476 /* FSCalendarCell.m */, - 307E05B71C61EC5C0052A9B4 /* FSCalendarEventIndicator.h */, - 307E05B81C61EC5C0052A9B4 /* FSCalendarEventIndicator.m */, EEC9C0371BDC9E7000383A07 /* FSCalendarCollectionView.h */, EEC9C0381BDC9E7000383A07 /* FSCalendarCollectionView.m */, 30B0BAC61B8D8E22004B9476 /* FSCalendarHeader.h */, @@ -249,8 +237,6 @@ 30CEF8FF1C950C1F008EAFB1 /* FSCalendarAnimator.m */, 3055B1C01DA9323A002AFA13 /* FSCalendarExtensions.h */, 3055B1C11DA9323A002AFA13 /* FSCalendarExtensions.m */, - 30B0BABD1B8D8E22004B9476 /* FSCalendar+IBExtension.h */, - 30B0BABE1B8D8E22004B9476 /* FSCalendar+IBExtension.m */, 30B0BAC51B8D8E22004B9476 /* FSCalendarDynamicHeader.h */, 3065CAA61CD3506A006C218D /* FSCalendar+Deprecated.m */, 30B0BAF31B8D9A91004B9476 /* Supporting Files */, @@ -407,14 +393,12 @@ 30B0BB021B8D9B6C004B9476 /* FSCalendarCell.h in Headers */, 30B0BB041B8D9B6D004B9476 /* FSCalendarHeader.h in Headers */, EEC9C0391BDC9E7000383A07 /* FSCalendarCollectionView.h in Headers */, - 307E05B91C61EC5C0052A9B4 /* FSCalendarEventIndicator.h in Headers */, 30FCB3961BAAD112002B87AD /* FSCalendarStickyHeader.h in Headers */, 3065CA961CD31B81006C218D /* FSCalendarScopeHandle.h in Headers */, - 3055B1C21DA9323A002AFA13 /* FSCalendarExtensions.h in Headers */, 3095398F1C38D66C00BD37AA /* FSCalendarFlowLayout.h in Headers */, + 3055B1C21DA9323A002AFA13 /* FSCalendarExtensions.h in Headers */, 30CEF9001C950C1F008EAFB1 /* FSCalendarAnimator.h in Headers */, 30B0BB031B8D9B6D004B9476 /* FSCalendarDynamicHeader.h in Headers */, - 30B0BB001B8D9B6C004B9476 /* FSCalendar+IBExtension.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -566,7 +550,6 @@ files = ( EE638CCE1B89DBD80006DD1A /* StoryboardExampleViewController.m in Sources */, EECA10F81BA9C0E400945B83 /* FullScreenExampleViewController.m in Sources */, - 307E05BA1C61EC5C0052A9B4 /* FSCalendarEventIndicator.m in Sources */, EE638CC91B89DB940006DD1A /* CalendarConfigViewController.m in Sources */, 30B0BAD01B8D8E23004B9476 /* FSCalendar.m in Sources */, 3065CAA81CD3506A006C218D /* FSCalendar+Deprecated.m in Sources */, @@ -581,7 +564,6 @@ 308B58D81CC08FFA004E812D /* ButtonsViewController.m in Sources */, EE638CCB1B89DBAC0006DD1A /* main.m in Sources */, 30B0BAD11B8D8E23004B9476 /* FSCalendarAppearance.m in Sources */, - 30B0BACF1B8D8E23004B9476 /* FSCalendar+IBExtension.m in Sources */, 30CEF9011C950C1F008EAFB1 /* FSCalendarAnimator.m in Sources */, EEC9C03A1BDC9E7000383A07 /* FSCalendarCollectionView.m in Sources */, 30D55B101C90240000BB43D5 /* HidePlaceholderViewController.m in Sources */, @@ -599,8 +581,6 @@ buildActionMask = 2147483647; files = ( 30F5D8561B9FC33400C1C201 /* FSCalendar.m in Sources */, - 307E05BB1C61EC5C0052A9B4 /* FSCalendarEventIndicator.m in Sources */, - 30B0BAF41B8D9AC1004B9476 /* FSCalendar+IBExtension.m in Sources */, 30B0BAF61B8D9AC1004B9476 /* FSCalendarAppearance.m in Sources */, EEC9C03B1BDC9E7000383A07 /* FSCalendarCollectionView.m in Sources */, 3065CAA91CD3506A006C218D /* FSCalendar+Deprecated.m in Sources */, diff --git a/Example/StoryboardExampleViewController.m b/Example/StoryboardExampleViewController.m index 27de966..6c78f5a 100644 --- a/Example/StoryboardExampleViewController.m +++ b/Example/StoryboardExampleViewController.m @@ -66,6 +66,7 @@ @"2015-10-15", @"2015-10-25"]; +// self.calendar.appearance.weekdayBackground = [UIColor cyanColor]; // _calendar.locale = [NSLocale currentLocale]; diff --git a/FSCalendar/FSCalendar+IBExtension.h b/FSCalendar/FSCalendar+IBExtension.h deleted file mode 100644 index b9166ec..0000000 --- a/FSCalendar/FSCalendar+IBExtension.h +++ /dev/null @@ -1,65 +0,0 @@ -// -// FSCalendar+IBExtension.h -// FSCalendar -// -// Created by Wenchao Ding on 8/14/15. -// Copyright © 2016 Wenchao Ding. All rights reserved. -// -// 注意: 这些方法仅仅为了在IB中使用,不建议直接调用。这些方法在calendar.appearance中使用。如: calendar.appearance.eventDefaultColor -// Warning: For IB usage only. Directly calling these methods is NOT RECOMMENDED. Use calendar.appearance instead. - - -#import "FSCalendar.h" -#import "FSCalendarConstants.h" - -IB_DESIGNABLE -@interface FSCalendar (IBExtension) - -#if TARGET_INTERFACE_BUILDER - -@property (assign, nonatomic) IBInspectable BOOL adjustsFontSizeToFitContentSize; -@property (assign, nonatomic) IBInspectable CGFloat titleTextSize; -@property (assign, nonatomic) IBInspectable CGFloat subtitleTextSize; -@property (assign, nonatomic) IBInspectable CGFloat weekdayTextSize; -@property (assign, nonatomic) IBInspectable CGFloat headerTitleTextSize; - -@property (strong, nonatomic) IBInspectable UIColor *eventDefaultColor; -@property (strong, nonatomic) IBInspectable UIColor *eventSelectionColor; -@property (strong, nonatomic) IBInspectable UIColor *weekdayTextColor; - -@property (strong, nonatomic) IBInspectable UIColor *headerTitleColor; -@property (strong, nonatomic) IBInspectable NSString *headerDateFormat; -@property (assign, nonatomic) IBInspectable CGFloat headerMinimumDissolvedAlpha; - -@property (strong, nonatomic) IBInspectable UIColor *titleDefaultColor; -@property (strong, nonatomic) IBInspectable UIColor *titleSelectionColor; -@property (strong, nonatomic) IBInspectable UIColor *titleTodayColor; -@property (strong, nonatomic) IBInspectable UIColor *titlePlaceholderColor; -@property (strong, nonatomic) IBInspectable UIColor *titleWeekendColor; - -@property (strong, nonatomic) IBInspectable UIColor *subtitleDefaultColor; -@property (strong, nonatomic) IBInspectable UIColor *subtitleSelectionColor; -@property (strong, nonatomic) IBInspectable UIColor *subtitleTodayColor; -@property (strong, nonatomic) IBInspectable UIColor *subtitlePlaceholderColor; -@property (strong, nonatomic) IBInspectable UIColor *subtitleWeekendColor; - -@property (strong, nonatomic) IBInspectable UIColor *selectionColor; -@property (strong, nonatomic) IBInspectable UIColor *todayColor; -@property (strong, nonatomic) IBInspectable UIColor *todaySelectionColor; - -@property (strong, nonatomic) IBInspectable UIColor *borderDefaultColor; -@property (strong, nonatomic) IBInspectable UIColor *borderSelectionColor; - -@property (assign, nonatomic) IBInspectable CGFloat borderRadius; -@property (assign, nonatomic) IBInspectable BOOL useVeryShortWeekdaySymbols; - -@property (assign, nonatomic) IBInspectable BOOL fakeSubtitles; -@property (assign, nonatomic) IBInspectable BOOL fakeEventDots; -@property (assign, nonatomic) IBInspectable NSInteger fakedSelectedDay; - -#endif - -@end - - - diff --git a/FSCalendar/FSCalendar+IBExtension.m b/FSCalendar/FSCalendar+IBExtension.m deleted file mode 100644 index 54f9969..0000000 --- a/FSCalendar/FSCalendar+IBExtension.m +++ /dev/null @@ -1,31 +0,0 @@ -// -// FSCalendar+IBExtension.m -// FSCalendar -// -// Created by Wenchao Ding on 8/14/15. -// Copyright © 2016 Wenchao Ding. All rights reserved. -// - -#import "FSCalendar+IBExtension.h" - -@implementation FSCalendar (IBExtension) - -- (void)setValue:(id)value forUndefinedKey:(NSString *)key -{ -#if !TARGET_INTERFACE_BUILDER - if ([key hasPrefix:@"fake"]) { - return; - } -#endif - if (key.length) { - NSString *setter = [NSString stringWithFormat:@"set%@%@:",[key substringToIndex:1].uppercaseString,[key substringFromIndex:1]]; - if ([self.appearance respondsToSelector:NSSelectorFromString(setter)]) { - return [self.appearance setValue:value forKey:key]; - } - } - return [super setValue:value forUndefinedKey:key]; - -} - -@end - diff --git a/FSCalendar/FSCalendar.h b/FSCalendar/FSCalendar.h index 5b352e4..0d8704b 100644 --- a/FSCalendar/FSCalendar.h +++ b/FSCalendar/FSCalendar.h @@ -229,7 +229,6 @@ NS_ASSUME_NONNULL_BEGIN /** * These functions are deprecated */ -- (FSCalendarCellStyle)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance cellStyleForDate:(NSDate *)date FSCalendarDeprecated(-calendar:appearance:cellShapeForDate:); - (nullable UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance fillColorForDate:(NSDate *)date FSCalendarDeprecated(-calendar:appearance:fillDefaultColorForDate:); - (nullable UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance selectionColorForDate:(NSDate *)date FSCalendarDeprecated(-calendar:appearance:fillSelectionColorForDate:); - (nullable UIColor *)calendar:(FSCalendar *)calendar appearance:(FSCalendarAppearance *)appearance eventColorForDate:(NSDate *)date FSCalendarDeprecated(-calendar:appearance:eventDefaultColorsForDate:); @@ -447,6 +446,55 @@ IB_DESIGNABLE @end +IB_DESIGNABLE +@interface FSCalendar (IBExtension) + +#if TARGET_INTERFACE_BUILDER + +@property (assign, nonatomic) IBInspectable BOOL adjustsFontSizeToFitContentSize; +@property (assign, nonatomic) IBInspectable CGFloat titleTextSize; +@property (assign, nonatomic) IBInspectable CGFloat subtitleTextSize; +@property (assign, nonatomic) IBInspectable CGFloat weekdayTextSize; +@property (assign, nonatomic) IBInspectable CGFloat headerTitleTextSize; + +@property (strong, nonatomic) IBInspectable UIColor *eventDefaultColor; +@property (strong, nonatomic) IBInspectable UIColor *eventSelectionColor; +@property (strong, nonatomic) IBInspectable UIColor *weekdayTextColor; + +@property (strong, nonatomic) IBInspectable UIColor *headerTitleColor; +@property (strong, nonatomic) IBInspectable NSString *headerDateFormat; +@property (assign, nonatomic) IBInspectable CGFloat headerMinimumDissolvedAlpha; + +@property (strong, nonatomic) IBInspectable UIColor *titleDefaultColor; +@property (strong, nonatomic) IBInspectable UIColor *titleSelectionColor; +@property (strong, nonatomic) IBInspectable UIColor *titleTodayColor; +@property (strong, nonatomic) IBInspectable UIColor *titlePlaceholderColor; +@property (strong, nonatomic) IBInspectable UIColor *titleWeekendColor; + +@property (strong, nonatomic) IBInspectable UIColor *subtitleDefaultColor; +@property (strong, nonatomic) IBInspectable UIColor *subtitleSelectionColor; +@property (strong, nonatomic) IBInspectable UIColor *subtitleTodayColor; +@property (strong, nonatomic) IBInspectable UIColor *subtitlePlaceholderColor; +@property (strong, nonatomic) IBInspectable UIColor *subtitleWeekendColor; + +@property (strong, nonatomic) IBInspectable UIColor *selectionColor; +@property (strong, nonatomic) IBInspectable UIColor *todayColor; +@property (strong, nonatomic) IBInspectable UIColor *todaySelectionColor; + +@property (strong, nonatomic) IBInspectable UIColor *borderDefaultColor; +@property (strong, nonatomic) IBInspectable UIColor *borderSelectionColor; + +@property (assign, nonatomic) IBInspectable CGFloat borderRadius; +@property (assign, nonatomic) IBInspectable BOOL useVeryShortWeekdaySymbols; + +@property (assign, nonatomic) IBInspectable BOOL fakeSubtitles; +@property (assign, nonatomic) IBInspectable BOOL fakeEventDots; +@property (assign, nonatomic) IBInspectable NSInteger fakedSelectedDay; + +#endif + +@end + #pragma mark - Deprecate diff --git a/FSCalendar/FSCalendar.m b/FSCalendar/FSCalendar.m index 9b75522..801feaa 100644 --- a/FSCalendar/FSCalendar.m +++ b/FSCalendar/FSCalendar.m @@ -91,7 +91,7 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { { NSMutableArray *_selectedDates; } -@property (strong, nonatomic) NSMutableArray *weekdays; +@property (strong, nonatomic) NSArray *weekdays; @property (strong, nonatomic) NSMapTable *stickyHeaderMapTable; @property (strong, nonatomic) NSCalendar *gregorian; @@ -103,6 +103,7 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { @property (weak , nonatomic) UIView *daysContainer; @property (weak , nonatomic) UIView *topBorder; @property (weak , nonatomic) UIView *bottomBorder; +@property (weak , nonatomic) UIImageView *weekdayView; @property (weak , nonatomic) FSCalendarScopeHandle *scopeHandle; @property (weak , nonatomic) FSCalendarCollectionView *collectionView; @property (weak , nonatomic) FSCalendarFlowLayout *collectionViewLayout; @@ -161,6 +162,7 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { - (void)invalidateWeekdayFont; - (void)invalidateWeekdayTextColor; +- (void)invalidateWeekdayBackground; - (void)invalidateViewFrames; @@ -282,12 +284,6 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { self.collectionView = collectionView; self.collectionViewLayout = collectionViewLayout; - - SEL selector = NSSelectorFromString(@"setPrefetchingEnabled:"); - if (selector && [collectionView respondsToSelector:selector]) { - [collectionView fs_performSelector:selector withObjects:@NO, nil]; - } - if (!FSCalendarInAppExtension) { UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; @@ -347,6 +343,23 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { } } +- (void)setValue:(id)value forUndefinedKey:(NSString *)key +{ +#if !TARGET_INTERFACE_BUILDER + if ([key hasPrefix:@"fake"]) { + return; + } +#endif + if (key.length) { + NSString *setter = [NSString stringWithFormat:@"set%@%@:",[key substringToIndex:1].uppercaseString,[key substringFromIndex:1]]; + if ([self.appearance respondsToSelector:NSSelectorFromString(setter)]) { + return [self.appearance setValue:value forKey:key]; + } + } + return [super setValue:value forUndefinedKey:key]; + +} + - (void)layoutSubviews { [super layoutSubviews]; @@ -393,6 +406,9 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { weekdayWidth, weekdayHeight); }]; + if (_weekdayView) { + _weekdayView.frame = CGRectMake(_weekdays.firstObject.fs_left, _weekdays.firstObject.fs_top, _weekdays.lastObject.fs_right, _weekdays.firstObject.fs_height); + } _deliver.frame = CGRectMake(_header.fs_left, _header.fs_top, _header.fs_width, headerHeight+weekdayHeight); _deliver.hidden = _header.hidden; @@ -1526,7 +1542,7 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { if (!_weekdays.count) { NSArray *weekSymbols = self.gregorian.shortStandaloneWeekdaySymbols; - _weekdays = [NSMutableArray arrayWithCapacity:weekSymbols.count]; + NSMutableArray *weekdays = [NSMutableArray arrayWithCapacity:weekSymbols.count]; UIFont *weekdayFont = _appearance.preferredWeekdayFont; for (int i = 0; i < weekSymbols.count; i++) { UILabel *weekdayLabel = [[UILabel alloc] initWithFrame:CGRectZero]; @@ -1534,9 +1550,10 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { weekdayLabel.textAlignment = NSTextAlignmentCenter; weekdayLabel.font = weekdayFont; weekdayLabel.textColor = _appearance.weekdayTextColor; - [_weekdays addObject:weekdayLabel]; + [weekdays addObject:weekdayLabel]; [_contentView addSubview:weekdayLabel]; } + self.weekdays = weekdays; } if (self.showsScopeHandle) { @@ -1569,7 +1586,7 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { } if (_weekdays.count) { [_weekdays makeObjectsPerformSelector:@selector(removeFromSuperview)]; - [_weekdays removeAllObjects]; + _weekdays = @[]; } if (_scopeHandle) { @@ -1747,6 +1764,30 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { [_weekdays makeObjectsPerformSelector:@selector(setTextColor:) withObject:_appearance.weekdayTextColor]; } +- (void)invalidateWeekdayBackground +{ + if (self.appearance.weekdayBackground) { + if (!self.weekdayView) { + UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectZero]; + imageView.contentMode = UIViewContentModeCenter; + [self.contentView insertSubview:imageView belowSubview:self.weekdays.firstObject]; + self.weekdayView = imageView; + } + if (self.hasValidateVisibleLayout) { + self.weekdayView.frame = CGRectMake(self.weekdays.firstObject.fs_left, self.weekdays.firstObject.fs_top, self.weekdays.lastObject.fs_right, self.weekdays.firstObject.fs_height); + } + if ([self.appearance.weekdayBackground isKindOfClass:[UIImage class]]) { + self.weekdayView.image = self.appearance.weekdayBackground; + self.weekdayView.backgroundColor = nil; + } else { + self.weekdayView.image = nil; + self.weekdayView.backgroundColor = self.appearance.weekdayBackground; + } + } else { + self.weekdayView = nil; + } +} + - (void)invalidateViewFrames { _needsAdjustingViewFrame = YES; @@ -1981,10 +2022,6 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) { FSCalendarCellShape cellShape = [self.delegateAppearance calendar:self appearance:self.appearance cellShapeForDate:date]; return cellShape; } - else if (self.delegateAppearance && [self.delegateAppearance respondsToSelector:@selector(calendar:appearance:cellStyleForDate:)]) { - FSCalendarCellShape cellShape = (FSCalendarCellShape)[self.delegateAppearance calendar:self appearance:self.appearance cellStyleForDate:date]; - return cellShape; - } #pragma GCC diagnostic pop return -1; } diff --git a/FSCalendar/FSCalendarAppearance.h b/FSCalendar/FSCalendarAppearance.h index 9e4a126..549dfaa 100644 --- a/FSCalendar/FSCalendarAppearance.h +++ b/FSCalendar/FSCalendarAppearance.h @@ -101,6 +101,11 @@ typedef NS_OPTIONS(NSUInteger, FSCalendarCaseOptions) { */ @property (strong, nonatomic) UIColor *weekdayTextColor; +/** + * The background color/image for the weekdays + */ +@property (strong, nonatomic) id weekdayBackground; + /** * The color of month header text. */ @@ -234,9 +239,7 @@ typedef NS_OPTIONS(NSUInteger, FSCalendarCaseOptions) { */ @interface FSCalendarAppearance (Deprecated) -@property (assign, nonatomic) FSCalendarCellStyle cellStyle FSCalendarDeprecated('cellShape'); @property (assign, nonatomic) BOOL useVeryShortWeekdaySymbols FSCalendarDeprecated('caseOptions'); -@property (assign, nonatomic) BOOL autoAdjustTitleSize FSCalendarDeprecated('adjustFontSizeToFitContentSize'); @property (assign, nonatomic) BOOL adjustsFontSizeToFitCellSize FSCalendarDeprecated('adjustFontSizeToFitContentSize'); @property (assign, nonatomic) CGFloat titleTextSize FSCalendarDeprecated('titleFont'); @property (assign, nonatomic) CGFloat subtitleTextSize FSCalendarDeprecated('subtitleFont'); diff --git a/FSCalendar/FSCalendarAppearance.m b/FSCalendar/FSCalendarAppearance.m index e462596..6d97b2c 100644 --- a/FSCalendar/FSCalendarAppearance.m +++ b/FSCalendar/FSCalendarAppearance.m @@ -495,6 +495,17 @@ } } +- (void)setWeekdayBackground:(id)weekdayBackground +{ + if (weekdayBackground && (![weekdayBackground isKindOfClass:[UIImage class]] && ![weekdayBackground isKindOfClass:[UIColor class]])) { + [NSException raise:@"Invalidate Argument" format:@"The weekday background could only be a UIImage or UIColor instance"]; + } + if (![_weekdayBackground isEqual:weekdayBackground]) { + _weekdayBackground = weekdayBackground; + [self invalidateWeekdayBackground]; + } +} + - (void)setHeaderTitleColor:(UIColor *)color { if (![_headerTitleColor isEqual:color]) { @@ -667,6 +678,12 @@ [_calendar.visibleStickyHeaders makeObjectsPerformSelector:_cmd]; } +- (void)invalidateWeekdayBackground +{ + [_calendar invalidateWeekdayBackground]; + [_calendar.visibleStickyHeaders makeObjectsPerformSelector:_cmd]; +} + - (void)invalidateHeaderFont { [_calendar.header.collectionView.visibleCells makeObjectsPerformSelector:_cmd]; @@ -684,16 +701,6 @@ @implementation FSCalendarAppearance (Deprecated) -- (void)setCellStyle:(FSCalendarCellStyle)cellStyle -{ - self.cellShape = (FSCalendarCellShape)cellStyle; -} - -- (FSCalendarCellStyle)cellStyle -{ - return (FSCalendarCellStyle)self.cellShape; -} - - (void)setUseVeryShortWeekdaySymbols:(BOOL)useVeryShortWeekdaySymbols { _caseOptions &= 15; @@ -705,16 +712,6 @@ return (_caseOptions & (15<<4) ) == FSCalendarCaseOptionsWeekdayUsesSingleUpperCase; } -- (void)setAutoAdjustTitleSize:(BOOL)autoAdjustTitleSize -{ - self.adjustsFontSizeToFitContentSize = autoAdjustTitleSize; -} - -- (BOOL)autoAdjustTitleSize -{ - return self.adjustsFontSizeToFitContentSize; -} - - (void)setTitleTextSize:(CGFloat)titleTextSize { self.titleFont = [UIFont fontWithName:_titleFontName size:titleTextSize]; diff --git a/FSCalendar/FSCalendarCell.h b/FSCalendar/FSCalendarCell.h index 1949d23..6c11486 100644 --- a/FSCalendar/FSCalendarCell.h +++ b/FSCalendar/FSCalendarCell.h @@ -8,8 +8,8 @@ #import #import "FSCalendar.h" -#import "FSCalendarEventIndicator.h" +@class FSCalendarEventIndicator; @interface FSCalendarCell : UICollectionViewCell @property (weak, nonatomic) FSCalendar *calendar; @@ -70,3 +70,13 @@ - (void)performSelecting; @end + + +@interface FSCalendarEventIndicator : UIView + +@property (assign, nonatomic) NSInteger numberOfEvents; +@property (strong, nonatomic) id color; +@property (assign, nonatomic) BOOL needsAdjustingViewFrame; + +@end + diff --git a/FSCalendar/FSCalendarCell.m b/FSCalendar/FSCalendarCell.m index 4d93cce..2bec89e 100644 --- a/FSCalendar/FSCalendarCell.m +++ b/FSCalendar/FSCalendarCell.m @@ -462,4 +462,119 @@ OFFSET_PROPERTY(preferredEventOffset, PreferredEventOffset, _appearance.eventOff @end +@interface FSCalendarEventIndicator () + +@property (weak, nonatomic) UIView *contentView; + +@property (strong, nonatomic) NSMutableArray *eventLayers; +@property (assign, nonatomic) BOOL needsInvalidatingColor; + +@end + +@implementation FSCalendarEventIndicator + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + + UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; + [self addSubview:view]; + self.contentView = view; + + self.eventLayers = [NSMutableArray arrayWithCapacity:3]; + for (int i = 0; i < 3; i++) { + CALayer *layer = [CALayer layer]; + layer.backgroundColor = [UIColor clearColor].CGColor; + [self.eventLayers addObject:layer]; + [self.contentView.layer addSublayer:layer]; + } + + _needsInvalidatingColor = YES; + _needsAdjustingViewFrame = YES; + + } + return self; +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + if (_needsAdjustingViewFrame) { + CGFloat diameter = MIN(MIN(self.fs_width, self.fs_height),FSCalendarMaximumEventDotDiameter); + self.contentView.fs_height = self.fs_height; + self.contentView.fs_width = (self.numberOfEvents*2-1)*diameter; + self.contentView.center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); + } +} + +- (void)layoutSublayersOfLayer:(CALayer *)layer +{ + [super layoutSublayersOfLayer:layer]; + if (layer == self.layer) { + if (_needsAdjustingViewFrame) { + _needsAdjustingViewFrame = NO; + CGFloat diameter = MIN(MIN(self.fs_width, self.fs_height),FSCalendarMaximumEventDotDiameter); + for (int i = 0; i < self.eventLayers.count; i++) { + CALayer *eventLayer = self.eventLayers[i]; + eventLayer.hidden = i >= self.numberOfEvents; + if (!eventLayer.hidden) { + eventLayer.frame = CGRectMake(2*i*diameter, (self.fs_height-diameter)*0.5, diameter, diameter); + if (eventLayer.cornerRadius != diameter/2) { + eventLayer.cornerRadius = diameter/2; + } + } + } + } + if (_needsInvalidatingColor) { + _needsInvalidatingColor = NO; + if ([_color isKindOfClass:[UIColor class]]) { + [self.eventLayers makeObjectsPerformSelector:@selector(setBackgroundColor:) withObject:(id)[_color CGColor]]; + } else if ([_color isKindOfClass:[NSArray class]]) { + NSArray *colors = (NSArray *)_color; + if (colors.count) { + UIColor *lastColor = colors.firstObject; + for (int i = 0; i < self.eventLayers.count; i++) { + if (i < colors.count) { + lastColor = colors[i]; + } + CALayer *eventLayer = self.eventLayers[i]; + eventLayer.backgroundColor = lastColor.CGColor; + } + } + } + } + } +} + +- (void)setColor:(id)color +{ + if (![_color isEqual:color]) { + _color = color; + _needsInvalidatingColor = YES; + [self setNeedsLayout]; + } +} + +- (void)setNumberOfEvents:(NSInteger)numberOfEvents +{ + if (_numberOfEvents != numberOfEvents) { + _numberOfEvents = MIN(MAX(numberOfEvents,0),3); + _needsAdjustingViewFrame = YES; + [self setNeedsLayout]; + } +} + +- (void)setNeedsAdjustingViewFrame:(BOOL)needsAdjustingViewFrame +{ + if (_needsAdjustingViewFrame != needsAdjustingViewFrame) { + _needsAdjustingViewFrame = needsAdjustingViewFrame; + if (needsAdjustingViewFrame) { + [self setNeedsLayout]; + } + } +} + +@end + diff --git a/FSCalendar/FSCalendarCollectionView.m b/FSCalendar/FSCalendarCollectionView.m index 3abbde2..bc31bbe 100644 --- a/FSCalendar/FSCalendarCollectionView.m +++ b/FSCalendar/FSCalendarCollectionView.m @@ -7,6 +7,7 @@ // #import "FSCalendarCollectionView.h" +#import "FSCalendarExtensions.h" @interface FSCalendarCollectionView () @@ -40,11 +41,19 @@ { self.scrollsToTop = NO; self.contentInset = UIEdgeInsetsZero; + #ifdef __IPHONE_9_0 if ([self respondsToSelector:@selector(setSemanticContentAttribute:)]) { self.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; } #endif + +#ifdef __IPHONE_10_0 + SEL selector = NSSelectorFromString(@"setPrefetchingEnabled:"); + if (selector && [self respondsToSelector:selector]) { + [self fs_performSelector:selector withObjects:@NO, nil]; + } +#endif } - (void)setContentInset:(UIEdgeInsets)contentInset diff --git a/FSCalendar/FSCalendarDynamicHeader.h b/FSCalendar/FSCalendarDynamicHeader.h index 0e933bc..56a685f 100644 --- a/FSCalendar/FSCalendarDynamicHeader.h +++ b/FSCalendar/FSCalendarDynamicHeader.h @@ -28,7 +28,7 @@ @property (readonly, nonatomic) FSCalendarScopeHandle *scopeHandle; @property (readonly, nonatomic) FSCalendarFlowLayout *collectionViewLayout; @property (readonly, nonatomic) FSCalendarAnimator *animator; -@property (readonly, nonatomic) NSArray *weekdays; +@property (readonly, nonatomic) NSArray *weekdays; @property (readonly, nonatomic) BOOL floatingMode; @property (readonly, nonatomic) NSArray *visibleStickyHeaders; @property (readonly, nonatomic) CGFloat preferredHeaderHeight; @@ -49,6 +49,7 @@ - (void)invalidateWeekdayFont; - (void)invalidateWeekdayTextColor; +- (void)invalidateWeekdayBackground; - (void)invalidateHeaders; - (void)invalidateWeekdaySymbols; diff --git a/FSCalendar/FSCalendarEventIndicator.h b/FSCalendar/FSCalendarEventIndicator.h deleted file mode 100644 index 8e96a30..0000000 --- a/FSCalendar/FSCalendarEventIndicator.h +++ /dev/null @@ -1,17 +0,0 @@ -// -// FSCalendarEventView.h -// FSCalendar -// -// Created by dingwenchao on 2/3/16. -// Copyright © 2016 wenchaoios. All rights reserved. -// - -#import - -@interface FSCalendarEventIndicator : UIView - -@property (assign, nonatomic) NSInteger numberOfEvents; -@property (strong, nonatomic) id color; -@property (assign, nonatomic) BOOL needsAdjustingViewFrame; - -@end diff --git a/FSCalendar/FSCalendarEventIndicator.m b/FSCalendar/FSCalendarEventIndicator.m deleted file mode 100644 index 55d491a..0000000 --- a/FSCalendar/FSCalendarEventIndicator.m +++ /dev/null @@ -1,126 +0,0 @@ -// -// FSCalendarEventView.m -// FSCalendar -// -// Created by dingwenchao on 2/3/16. -// Copyright © 2016 wenchaoios. All rights reserved. -// - -#import "FSCalendarEventIndicator.h" -#import "FSCalendarConstants.h" -#import "FSCalendarExtensions.h" - -@interface FSCalendarEventIndicator () - -@property (weak, nonatomic) UIView *contentView; - -@property (strong, nonatomic) NSMutableArray *eventLayers; -@property (assign, nonatomic) BOOL needsInvalidatingColor; - -@end - -@implementation FSCalendarEventIndicator - -- (instancetype)initWithFrame:(CGRect)frame -{ - self = [super initWithFrame:frame]; - if (self) { - - UIView *view = [[UIView alloc] initWithFrame:CGRectZero]; - [self addSubview:view]; - self.contentView = view; - - self.eventLayers = [NSMutableArray arrayWithCapacity:3]; - for (int i = 0; i < 3; i++) { - CALayer *layer = [CALayer layer]; - layer.backgroundColor = [UIColor clearColor].CGColor; - [self.eventLayers addObject:layer]; - [self.contentView.layer addSublayer:layer]; - } - - _needsInvalidatingColor = YES; - _needsAdjustingViewFrame = YES; - - } - return self; -} - -- (void)layoutSubviews -{ - [super layoutSubviews]; - if (_needsAdjustingViewFrame) { - CGFloat diameter = MIN(MIN(self.fs_width, self.fs_height),FSCalendarMaximumEventDotDiameter); - self.contentView.fs_height = self.fs_height; - self.contentView.fs_width = (self.numberOfEvents*2-1)*diameter; - self.contentView.center = CGPointMake(CGRectGetMidX(self.bounds), CGRectGetMidY(self.bounds)); - } -} - -- (void)layoutSublayersOfLayer:(CALayer *)layer -{ - [super layoutSublayersOfLayer:layer]; - if (layer == self.layer) { - if (_needsAdjustingViewFrame) { - _needsAdjustingViewFrame = NO; - CGFloat diameter = MIN(MIN(self.fs_width, self.fs_height),FSCalendarMaximumEventDotDiameter); - for (int i = 0; i < self.eventLayers.count; i++) { - CALayer *eventLayer = self.eventLayers[i]; - eventLayer.hidden = i >= self.numberOfEvents; - if (!eventLayer.hidden) { - eventLayer.frame = CGRectMake(2*i*diameter, (self.fs_height-diameter)*0.5, diameter, diameter); - if (eventLayer.cornerRadius != diameter/2) { - eventLayer.cornerRadius = diameter/2; - } - } - } - } - if (_needsInvalidatingColor) { - _needsInvalidatingColor = NO; - if ([_color isKindOfClass:[UIColor class]]) { - [self.eventLayers makeObjectsPerformSelector:@selector(setBackgroundColor:) withObject:(id)[_color CGColor]]; - } else if ([_color isKindOfClass:[NSArray class]]) { - NSArray *colors = (NSArray *)_color; - if (colors.count) { - UIColor *lastColor = colors.firstObject; - for (int i = 0; i < self.eventLayers.count; i++) { - if (i < colors.count) { - lastColor = colors[i]; - } - CALayer *eventLayer = self.eventLayers[i]; - eventLayer.backgroundColor = lastColor.CGColor; - } - } - } - } - } -} - -- (void)setColor:(id)color -{ - if (![_color isEqual:color]) { - _color = color; - _needsInvalidatingColor = YES; - [self setNeedsLayout]; - } -} - -- (void)setNumberOfEvents:(NSInteger)numberOfEvents -{ - if (_numberOfEvents != numberOfEvents) { - _numberOfEvents = MIN(MAX(numberOfEvents,0),3); - _needsAdjustingViewFrame = YES; - [self setNeedsLayout]; - } -} - -- (void)setNeedsAdjustingViewFrame:(BOOL)needsAdjustingViewFrame -{ - if (_needsAdjustingViewFrame != needsAdjustingViewFrame) { - _needsAdjustingViewFrame = needsAdjustingViewFrame; - if (needsAdjustingViewFrame) { - [self setNeedsLayout]; - } - } -} - -@end diff --git a/FSCalendar/FSCalendarFlowLayout.m b/FSCalendar/FSCalendarFlowLayout.m index 9170be3..cdfc085 100644 --- a/FSCalendar/FSCalendarFlowLayout.m +++ b/FSCalendar/FSCalendarFlowLayout.m @@ -31,7 +31,6 @@ { [super prepareLayout]; - CGFloat rowHeight = self.calendar.preferredRowHeight; if (!self.calendar.floatingMode) { diff --git a/FSCalendar/FSCalendarStickyHeader.h b/FSCalendar/FSCalendarStickyHeader.h index 4a851ec..fbbf7f1 100644 --- a/FSCalendar/FSCalendarStickyHeader.h +++ b/FSCalendar/FSCalendarStickyHeader.h @@ -17,14 +17,15 @@ @property (weak, nonatomic) UILabel *titleLabel; -@property (strong, nonatomic) NSArray *weekdayLabels; +@property (strong, nonatomic) NSArray *weekdayLabels; @property (strong, nonatomic) NSDate *month; - (void)invalidateHeaderFont; - (void)invalidateHeaderTextColor; - (void)invalidateWeekdayFont; - (void)invalidateWeekdayTextColor; +- (void)invalidateWeekdayBackground; - (void)invalidateWeekdaySymbols; -@end \ No newline at end of file +@end diff --git a/FSCalendar/FSCalendarStickyHeader.m b/FSCalendar/FSCalendarStickyHeader.m index 9b2dd95..6aeb71b 100644 --- a/FSCalendar/FSCalendarStickyHeader.m +++ b/FSCalendar/FSCalendarStickyHeader.m @@ -14,8 +14,9 @@ @interface FSCalendarStickyHeader () -@property (weak, nonatomic) UIView *contentView; -@property (weak, nonatomic) UIView *separator; +@property (weak , nonatomic) UIView *contentView; +@property (weak , nonatomic) UIView *separator; +@property (weak , nonatomic) UIImageView *weekdayView; @property (assign, nonatomic) BOOL needsAdjustingViewFrame; @@ -84,6 +85,8 @@ _separator.frame = CGRectMake(0, _contentView.fs_height-weekdayHeight-weekdayMargin*2, _contentView.fs_width, 1.0); _titleLabel.frame = CGRectMake(0, _separator.fs_bottom-titleHeight-weekdayMargin, titleWidth,titleHeight); + self.weekdayView.frame = CGRectMake(self.weekdayLabels.firstObject.fs_left, self.weekdayLabels.firstObject.fs_top, self.weekdayLabels.lastObject.fs_right, self.weekdayLabels.firstObject.fs_height); + } [self reloadData]; @@ -102,6 +105,7 @@ [self invalidateHeaderTextColor]; [self invalidateWeekdayFont]; [self invalidateWeekdayTextColor]; + [self invalidateWeekdayBackground]; } } @@ -151,6 +155,29 @@ }]; } +- (void)invalidateWeekdayBackground +{ + if (self.appearance.weekdayBackground) { + if (!self.weekdayView) { + UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectZero]; + imageView.contentMode = UIViewContentModeCenter; + [self.contentView insertSubview:imageView belowSubview:self.weekdayLabels.firstObject]; + self.weekdayView = imageView; + } + + self.weekdayView.frame = CGRectMake(self.weekdayLabels.firstObject.fs_left, self.weekdayLabels.firstObject.fs_top, self.weekdayLabels.lastObject.fs_right, self.weekdayLabels.firstObject.fs_height); + + if ([self.appearance.weekdayBackground isKindOfClass:[UIImage class]]) { + self.weekdayView.image = self.appearance.weekdayBackground; + self.weekdayView.backgroundColor = nil; + } else { + self.weekdayView.image = nil; + self.weekdayView.backgroundColor = self.appearance.weekdayBackground; + } + } else { + self.weekdayView = nil; + } +} @end diff --git a/SwiftExample/SwiftExample.xcodeproj/project.pbxproj b/SwiftExample/SwiftExample.xcodeproj/project.pbxproj index 1f5b9dc..053181f 100644 --- a/SwiftExample/SwiftExample.xcodeproj/project.pbxproj +++ b/SwiftExample/SwiftExample.xcodeproj/project.pbxproj @@ -9,7 +9,6 @@ /* Begin PBXBuildFile section */ 300414221CD751B200453AEB /* FSCalendarScopeHandle.m in Sources */ = {isa = PBXBuildFile; fileRef = 300414211CD751B200453AEB /* FSCalendarScopeHandle.m */; }; 300414261CD751CF00453AEB /* FSCalendar+Deprecated.m in Sources */ = {isa = PBXBuildFile; fileRef = 300414241CD751CF00453AEB /* FSCalendar+Deprecated.m */; }; - 300BFB121C6446FA00399553 /* FSCalendarEventIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 300BFB111C6446FA00399553 /* FSCalendarEventIndicator.m */; }; 303478391DB520C8007BBD2E /* TableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 303478381DB520C8007BBD2E /* TableViewController.swift */; }; 303DE6C11DB1CA3A00F43A0F /* FSCalendarConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 303DE6C01DB1CA3A00F43A0F /* FSCalendarConstants.m */; }; 3055B1C81DA9338C002AFA13 /* FSCalendarExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3055B1C71DA9338C002AFA13 /* FSCalendarExtensions.m */; }; @@ -22,7 +21,6 @@ EE0954B41B97DDE0007F6964 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EE0954B31B97DDE0007F6964 /* Images.xcassets */; }; EE0954B71B97DDE0007F6964 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = EE0954B51B97DDE0007F6964 /* LaunchScreen.xib */; }; EE0954C31B97DDE0007F6964 /* SwiftExampleTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0954C21B97DDE0007F6964 /* SwiftExampleTests.swift */; }; - EE0954E31B97DDF4007F6964 /* FSCalendar+IBExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = EE0954CE1B97DDF4007F6964 /* FSCalendar+IBExtension.m */; }; EE0954E41B97DDF4007F6964 /* FSCalendar.m in Sources */ = {isa = PBXBuildFile; fileRef = EE0954D01B97DDF4007F6964 /* FSCalendar.m */; }; EE0954E51B97DDF4007F6964 /* FSCalendarAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = EE0954D21B97DDF4007F6964 /* FSCalendarAppearance.m */; }; EE0954E61B97DDF4007F6964 /* FSCalendarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = EE0954D41B97DDF4007F6964 /* FSCalendarCell.m */; }; @@ -46,8 +44,6 @@ 300414201CD751B200453AEB /* FSCalendarScopeHandle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarScopeHandle.h; sourceTree = ""; }; 300414211CD751B200453AEB /* FSCalendarScopeHandle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarScopeHandle.m; sourceTree = ""; }; 300414241CD751CF00453AEB /* FSCalendar+Deprecated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+Deprecated.m"; sourceTree = ""; }; - 300BFB101C6446FA00399553 /* FSCalendarEventIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarEventIndicator.h; sourceTree = ""; }; - 300BFB111C6446FA00399553 /* FSCalendarEventIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarEventIndicator.m; sourceTree = ""; }; 303478381DB520C8007BBD2E /* TableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewController.swift; sourceTree = ""; }; 303DE6BF1DB1CA3A00F43A0F /* FSCalendarConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarConstants.h; sourceTree = ""; }; 303DE6C01DB1CA3A00F43A0F /* FSCalendarConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarConstants.m; sourceTree = ""; }; @@ -66,8 +62,6 @@ EE0954BC1B97DDE0007F6964 /* SwiftExampleTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftExampleTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; EE0954C11B97DDE0007F6964 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; EE0954C21B97DDE0007F6964 /* SwiftExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftExampleTests.swift; sourceTree = ""; }; - EE0954CD1B97DDF4007F6964 /* FSCalendar+IBExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FSCalendar+IBExtension.h"; sourceTree = ""; }; - EE0954CE1B97DDF4007F6964 /* FSCalendar+IBExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+IBExtension.m"; sourceTree = ""; }; EE0954CF1B97DDF4007F6964 /* FSCalendar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendar.h; sourceTree = ""; }; EE0954D01B97DDF4007F6964 /* FSCalendar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendar.m; sourceTree = ""; }; EE0954D11B97DDF4007F6964 /* FSCalendarAppearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarAppearance.h; sourceTree = ""; }; @@ -176,8 +170,6 @@ 300414211CD751B200453AEB /* FSCalendarScopeHandle.m */, EE0954D31B97DDF4007F6964 /* FSCalendarCell.h */, EE0954D41B97DDF4007F6964 /* FSCalendarCell.m */, - 300BFB101C6446FA00399553 /* FSCalendarEventIndicator.h */, - 300BFB111C6446FA00399553 /* FSCalendarEventIndicator.m */, 303DE6BF1DB1CA3A00F43A0F /* FSCalendarConstants.h */, 303DE6C01DB1CA3A00F43A0F /* FSCalendarConstants.m */, EEC9C03C1BDCA2D600383A07 /* FSCalendarCollectionView.h */, @@ -192,8 +184,6 @@ EE2B62821BB6D7FE00ACB430 /* FSCalendarStickyHeader.m */, 3055B1C61DA9338C002AFA13 /* FSCalendarExtensions.h */, 3055B1C71DA9338C002AFA13 /* FSCalendarExtensions.m */, - EE0954CD1B97DDF4007F6964 /* FSCalendar+IBExtension.h */, - EE0954CE1B97DDF4007F6964 /* FSCalendar+IBExtension.m */, 300414241CD751CF00453AEB /* FSCalendar+Deprecated.m */, EE0954D71B97DDF4007F6964 /* FSCalendarDynamicHeader.h */, EE0954DC1B97DDF4007F6964 /* Info.plist */, @@ -311,8 +301,6 @@ 303DE6C11DB1CA3A00F43A0F /* FSCalendarConstants.m in Sources */, EEC9C0401BDCA2D600383A07 /* FSCalendarCollectionView.m in Sources */, EE0954E81B97DDF4007F6964 /* FSCalendarHeader.m in Sources */, - EE0954E31B97DDF4007F6964 /* FSCalendar+IBExtension.m in Sources */, - 300BFB121C6446FA00399553 /* FSCalendarEventIndicator.m in Sources */, 303478391DB520C8007BBD2E /* TableViewController.swift in Sources */, EE2B62831BB6D7FE00ACB430 /* FSCalendarStickyHeader.m in Sources */, 306DB1461C96700800A10478 /* FSCalendarAnimator.m in Sources */, diff --git a/TodayExtensionExample/TodayExtensionExample.xcodeproj/project.pbxproj b/TodayExtensionExample/TodayExtensionExample.xcodeproj/project.pbxproj index 8a97873..7ed7f65 100644 --- a/TodayExtensionExample/TodayExtensionExample.xcodeproj/project.pbxproj +++ b/TodayExtensionExample/TodayExtensionExample.xcodeproj/project.pbxproj @@ -8,13 +8,11 @@ /* Begin PBXBuildFile section */ 300036ED1D9252CB00C795DE /* FSCalendar+Deprecated.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036CD1D9252CB00C795DE /* FSCalendar+Deprecated.m */; }; - 300036EE1D9252CB00C795DE /* FSCalendar+IBExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036CF1D9252CB00C795DE /* FSCalendar+IBExtension.m */; }; 300036EF1D9252CB00C795DE /* FSCalendar.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036D11D9252CB00C795DE /* FSCalendar.m */; }; 300036F01D9252CB00C795DE /* FSCalendarAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036D31D9252CB00C795DE /* FSCalendarAnimator.m */; }; 300036F11D9252CB00C795DE /* FSCalendarAppearance.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036D51D9252CB00C795DE /* FSCalendarAppearance.m */; }; 300036F21D9252CB00C795DE /* FSCalendarCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036D71D9252CB00C795DE /* FSCalendarCell.m */; }; 300036F31D9252CB00C795DE /* FSCalendarCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036D91D9252CB00C795DE /* FSCalendarCollectionView.m */; }; - 300036F51D9252CB00C795DE /* FSCalendarEventIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036DE1D9252CB00C795DE /* FSCalendarEventIndicator.m */; }; 300036F61D9252CB00C795DE /* FSCalendarFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036E01D9252CB00C795DE /* FSCalendarFlowLayout.m */; }; 300036F71D9252CB00C795DE /* FSCalendarHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036E21D9252CB00C795DE /* FSCalendarHeader.m */; }; 300036F81D9252CB00C795DE /* FSCalendarScopeHandle.m in Sources */ = {isa = PBXBuildFile; fileRef = 300036E41D9252CB00C795DE /* FSCalendarScopeHandle.m */; }; @@ -61,8 +59,6 @@ /* Begin PBXFileReference section */ 300036CD1D9252CB00C795DE /* FSCalendar+Deprecated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+Deprecated.m"; sourceTree = ""; }; - 300036CE1D9252CB00C795DE /* FSCalendar+IBExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FSCalendar+IBExtension.h"; sourceTree = ""; }; - 300036CF1D9252CB00C795DE /* FSCalendar+IBExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+IBExtension.m"; sourceTree = ""; }; 300036D01D9252CB00C795DE /* FSCalendar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendar.h; sourceTree = ""; }; 300036D11D9252CB00C795DE /* FSCalendar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendar.m; sourceTree = ""; }; 300036D21D9252CB00C795DE /* FSCalendarAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarAnimator.h; sourceTree = ""; }; @@ -74,8 +70,6 @@ 300036D81D9252CB00C795DE /* FSCalendarCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarCollectionView.h; sourceTree = ""; }; 300036D91D9252CB00C795DE /* FSCalendarCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarCollectionView.m; sourceTree = ""; }; 300036DC1D9252CB00C795DE /* FSCalendarDynamicHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarDynamicHeader.h; sourceTree = ""; }; - 300036DD1D9252CB00C795DE /* FSCalendarEventIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarEventIndicator.h; sourceTree = ""; }; - 300036DE1D9252CB00C795DE /* FSCalendarEventIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarEventIndicator.m; sourceTree = ""; }; 300036DF1D9252CB00C795DE /* FSCalendarFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarFlowLayout.h; sourceTree = ""; }; 300036E01D9252CB00C795DE /* FSCalendarFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarFlowLayout.m; sourceTree = ""; }; 300036E11D9252CB00C795DE /* FSCalendarHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarHeader.h; sourceTree = ""; }; @@ -141,8 +135,6 @@ 300036D81D9252CB00C795DE /* FSCalendarCollectionView.h */, 300036D91D9252CB00C795DE /* FSCalendarCollectionView.m */, 300036DC1D9252CB00C795DE /* FSCalendarDynamicHeader.h */, - 300036DD1D9252CB00C795DE /* FSCalendarEventIndicator.h */, - 300036DE1D9252CB00C795DE /* FSCalendarEventIndicator.m */, 300036DF1D9252CB00C795DE /* FSCalendarFlowLayout.h */, 300036E01D9252CB00C795DE /* FSCalendarFlowLayout.m */, 300036E11D9252CB00C795DE /* FSCalendarHeader.h */, @@ -156,8 +148,6 @@ 3055B1CC1DA933D0002AFA13 /* FSCalendarExtensions.h */, 3055B1CD1DA933D0002AFA13 /* FSCalendarExtensions.m */, 300036CD1D9252CB00C795DE /* FSCalendar+Deprecated.m */, - 300036CE1D9252CB00C795DE /* FSCalendar+IBExtension.h */, - 300036CF1D9252CB00C795DE /* FSCalendar+IBExtension.m */, 300036E71D9252CB00C795DE /* Info.plist */, ); name = FSCalendar; @@ -343,11 +333,9 @@ files = ( 300036F91D9252CB00C795DE /* FSCalendarStickyHeader.m in Sources */, 30A33A0E1DB1CA8D0039BEA3 /* FSCalendarConstants.m in Sources */, - 300036EE1D9252CB00C795DE /* FSCalendar+IBExtension.m in Sources */, 300036ED1D9252CB00C795DE /* FSCalendar+Deprecated.m in Sources */, 300036F01D9252CB00C795DE /* FSCalendarAnimator.m in Sources */, 300036F31D9252CB00C795DE /* FSCalendarCollectionView.m in Sources */, - 300036F51D9252CB00C795DE /* FSCalendarEventIndicator.m in Sources */, 300036F61D9252CB00C795DE /* FSCalendarFlowLayout.m in Sources */, 300036F71D9252CB00C795DE /* FSCalendarHeader.m in Sources */, 3055B1CE1DA933D0002AFA13 /* FSCalendarExtensions.m in Sources */,