calendar.appearance.weekdayBackground

This commit is contained in:
Wenchao Ding 2016-10-22 19:46:27 +08:00
parent b7a877a4d0
commit ae203f8a17
22 changed files with 297 additions and 345 deletions

View File

@ -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 = "<group>"; };
305233421D8170C60070AAFE /* Image.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Image.xcassets; sourceTree = "<group>"; };
305233481D8170E50070AAFE /* FSCalendar+Deprecated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+Deprecated.m"; sourceTree = "<group>"; };
305233491D8170E50070AAFE /* FSCalendar+IBExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FSCalendar+IBExtension.h"; sourceTree = "<group>"; };
3052334A1D8170E50070AAFE /* FSCalendar+IBExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+IBExtension.m"; sourceTree = "<group>"; };
3052334B1D8170E50070AAFE /* FSCalendar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendar.h; sourceTree = "<group>"; };
3052334C1D8170E50070AAFE /* FSCalendar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendar.m; sourceTree = "<group>"; };
3052334D1D8170E50070AAFE /* FSCalendarAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarAnimator.h; sourceTree = "<group>"; };
@ -91,8 +87,6 @@
305233531D8170E50070AAFE /* FSCalendarCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarCollectionView.h; sourceTree = "<group>"; };
305233541D8170E50070AAFE /* FSCalendarCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarCollectionView.m; sourceTree = "<group>"; };
305233571D8170E50070AAFE /* FSCalendarDynamicHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarDynamicHeader.h; sourceTree = "<group>"; };
305233581D8170E50070AAFE /* FSCalendarEventIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarEventIndicator.h; sourceTree = "<group>"; };
305233591D8170E50070AAFE /* FSCalendarEventIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarEventIndicator.m; sourceTree = "<group>"; };
3052335A1D8170E50070AAFE /* FSCalendarFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarFlowLayout.h; sourceTree = "<group>"; };
3052335B1D8170E50070AAFE /* FSCalendarFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarFlowLayout.m; sourceTree = "<group>"; };
3052335C1D8170E50070AAFE /* FSCalendarHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarHeader.h; sourceTree = "<group>"; };
@ -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 */,

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15G31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="8Tn-uw-jyK">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="8Tn-uw-jyK">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>
@ -293,7 +293,6 @@
<userDefinedRuntimeAttribute type="number" keyPath="fakedSelectedDay">
<integer key="value" value="1"/>
</userDefinedRuntimeAttribute>
<userDefinedRuntimeAttribute type="boolean" keyPath="autoAdjustTitleSize" value="YES"/>
</userDefinedRuntimeAttributes>
<connections>
<outlet property="dataSource" destination="Nko-Kc-zB0" id="zta-WZ-dEA"/>

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10117" systemVersion="15D21" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="x1V-gv-tFA">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="10116" systemVersion="15G1004" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" initialViewController="x1V-gv-tFA">
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="10085"/>

View File

@ -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 = "<group>"; };
3065CAA61CD3506A006C218D /* FSCalendar+Deprecated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+Deprecated.m"; sourceTree = "<group>"; };
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 = "<group>"; };
307E05B81C61EC5C0052A9B4 /* FSCalendarEventIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarEventIndicator.m; sourceTree = "<group>"; };
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 = "<group>"; };
@ -124,8 +116,6 @@
3095398D1C38D66C00BD37AA /* FSCalendarFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarFlowLayout.h; sourceTree = "<group>"; };
3095398E1C38D66C00BD37AA /* FSCalendarFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarFlowLayout.m; sourceTree = "<group>"; };
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 = "<group>"; };
30B0BABE1B8D8E22004B9476 /* FSCalendar+IBExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+IBExtension.m"; sourceTree = "<group>"; };
30B0BABF1B8D8E22004B9476 /* FSCalendar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendar.h; sourceTree = "<group>"; };
30B0BAC01B8D8E22004B9476 /* FSCalendar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendar.m; sourceTree = "<group>"; };
30B0BAC11B8D8E22004B9476 /* FSCalendarAppearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarAppearance.h; sourceTree = "<group>"; };
@ -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 */,

View File

@ -66,6 +66,7 @@
@"2015-10-15",
@"2015-10-25"];
// self.calendar.appearance.weekdayBackground = [UIColor cyanColor];
// _calendar.locale = [NSLocale currentLocale];

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -91,7 +91,7 @@ typedef NS_ENUM(NSUInteger, FSCalendarOrientation) {
{
NSMutableArray *_selectedDates;
}
@property (strong, nonatomic) NSMutableArray *weekdays;
@property (strong, nonatomic) NSArray<UILabel *> *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<UILabel *> *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;
}

View File

@ -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');

View File

@ -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];

View File

@ -8,8 +8,8 @@
#import <UIKit/UIKit.h>
#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

View File

@ -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

View File

@ -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

View File

@ -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<UILabel *> *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;

View File

@ -1,17 +0,0 @@
//
// FSCalendarEventView.h
// FSCalendar
//
// Created by dingwenchao on 2/3/16.
// Copyright © 2016 wenchaoios. All rights reserved.
//
#import <UIKit/UIKit.h>
@interface FSCalendarEventIndicator : UIView
@property (assign, nonatomic) NSInteger numberOfEvents;
@property (strong, nonatomic) id color;
@property (assign, nonatomic) BOOL needsAdjustingViewFrame;
@end

View File

@ -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

View File

@ -31,7 +31,6 @@
{
[super prepareLayout];
CGFloat rowHeight = self.calendar.preferredRowHeight;
if (!self.calendar.floatingMode) {

View File

@ -17,14 +17,15 @@
@property (weak, nonatomic) UILabel *titleLabel;
@property (strong, nonatomic) NSArray *weekdayLabels;
@property (strong, nonatomic) NSArray<UILabel *> *weekdayLabels;
@property (strong, nonatomic) NSDate *month;
- (void)invalidateHeaderFont;
- (void)invalidateHeaderTextColor;
- (void)invalidateWeekdayFont;
- (void)invalidateWeekdayTextColor;
- (void)invalidateWeekdayBackground;
- (void)invalidateWeekdaySymbols;
@end
@end

View File

@ -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

View File

@ -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 = "<group>"; };
300414211CD751B200453AEB /* FSCalendarScopeHandle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarScopeHandle.m; sourceTree = "<group>"; };
300414241CD751CF00453AEB /* FSCalendar+Deprecated.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+Deprecated.m"; sourceTree = "<group>"; };
300BFB101C6446FA00399553 /* FSCalendarEventIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarEventIndicator.h; sourceTree = "<group>"; };
300BFB111C6446FA00399553 /* FSCalendarEventIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarEventIndicator.m; sourceTree = "<group>"; };
303478381DB520C8007BBD2E /* TableViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TableViewController.swift; sourceTree = "<group>"; };
303DE6BF1DB1CA3A00F43A0F /* FSCalendarConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarConstants.h; sourceTree = "<group>"; };
303DE6C01DB1CA3A00F43A0F /* FSCalendarConstants.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarConstants.m; sourceTree = "<group>"; };
@ -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 = "<group>"; };
EE0954C21B97DDE0007F6964 /* SwiftExampleTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftExampleTests.swift; sourceTree = "<group>"; };
EE0954CD1B97DDF4007F6964 /* FSCalendar+IBExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FSCalendar+IBExtension.h"; sourceTree = "<group>"; };
EE0954CE1B97DDF4007F6964 /* FSCalendar+IBExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+IBExtension.m"; sourceTree = "<group>"; };
EE0954CF1B97DDF4007F6964 /* FSCalendar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendar.h; sourceTree = "<group>"; };
EE0954D01B97DDF4007F6964 /* FSCalendar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendar.m; sourceTree = "<group>"; };
EE0954D11B97DDF4007F6964 /* FSCalendarAppearance.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarAppearance.h; sourceTree = "<group>"; };
@ -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 */,

View File

@ -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 = "<group>"; };
300036CE1D9252CB00C795DE /* FSCalendar+IBExtension.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "FSCalendar+IBExtension.h"; sourceTree = "<group>"; };
300036CF1D9252CB00C795DE /* FSCalendar+IBExtension.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "FSCalendar+IBExtension.m"; sourceTree = "<group>"; };
300036D01D9252CB00C795DE /* FSCalendar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendar.h; sourceTree = "<group>"; };
300036D11D9252CB00C795DE /* FSCalendar.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendar.m; sourceTree = "<group>"; };
300036D21D9252CB00C795DE /* FSCalendarAnimator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarAnimator.h; sourceTree = "<group>"; };
@ -74,8 +70,6 @@
300036D81D9252CB00C795DE /* FSCalendarCollectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarCollectionView.h; sourceTree = "<group>"; };
300036D91D9252CB00C795DE /* FSCalendarCollectionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarCollectionView.m; sourceTree = "<group>"; };
300036DC1D9252CB00C795DE /* FSCalendarDynamicHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarDynamicHeader.h; sourceTree = "<group>"; };
300036DD1D9252CB00C795DE /* FSCalendarEventIndicator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarEventIndicator.h; sourceTree = "<group>"; };
300036DE1D9252CB00C795DE /* FSCalendarEventIndicator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarEventIndicator.m; sourceTree = "<group>"; };
300036DF1D9252CB00C795DE /* FSCalendarFlowLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarFlowLayout.h; sourceTree = "<group>"; };
300036E01D9252CB00C795DE /* FSCalendarFlowLayout.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = FSCalendarFlowLayout.m; sourceTree = "<group>"; };
300036E11D9252CB00C795DE /* FSCalendarHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FSCalendarHeader.h; sourceTree = "<group>"; };
@ -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 */,