diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/.gitignore" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/.gitignore" new file mode 100644 index 00000000..f5b5a9c5 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/.gitignore" @@ -0,0 +1,70 @@ +# Created by https://www.gitignore.io + +### OSX ### +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear on external disk +.Spotlight-V100 +.Trashes + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + +### Xcode ### +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.xcuserstate + + +### Objective-C ### +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control +# +# Pods/ + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook.xcodeproj/project.pbxproj" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook.xcodeproj/project.pbxproj" new file mode 100644 index 00000000..e4275c11 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook.xcodeproj/project.pbxproj" @@ -0,0 +1,553 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + EC0383921A17345B0047C77C /* NoteEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = EC0383911A17345B0047C77C /* NoteEntity.m */; }; + EC0383951A1736BD0047C77C /* NoteDAO.m in Sources */ = {isa = PBXBuildFile; fileRef = EC0383941A1736BD0047C77C /* NoteDAO.m */; }; + EC0383981A17392C0047C77C /* SQLiteHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = EC0383971A17392C0047C77C /* SQLiteHelper.m */; }; + EC03839B1A17689C0047C77C /* NewNoteViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC03839A1A17689C0047C77C /* NewNoteViewController.m */; }; + EC03839E1A176E2D0047C77C /* MainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC03839D1A176E2D0047C77C /* MainViewController.m */; }; + EC0383A01A17784C0047C77C /* libsqlite3.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = EC03839F1A17784C0047C77C /* libsqlite3.dylib */; }; + EC0383A31A1871860047C77C /* NoteDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC0383A21A1871860047C77C /* NoteDetailViewController.m */; }; + EC0383A61A18795D0047C77C /* NoteTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = EC0383A51A18795D0047C77C /* NoteTableViewCell.m */; }; + EC0383A81A189F7B0047C77C /* MobileCoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EC0383A71A189F7B0047C77C /* MobileCoreServices.framework */; }; + EC0383AB1A18C4D30047C77C /* PicNoteDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC0383AA1A18C4D30047C77C /* PicNoteDetailViewController.m */; }; + EC282FF41A1A564D00F4FE9C /* DrawNoteDetailViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC282FF31A1A564D00F4FE9C /* DrawNoteDetailViewController.m */; }; + EC451FBE1A1B3556007B4AB2 /* TakePhotoViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC451FBD1A1B3556007B4AB2 /* TakePhotoViewController.m */; }; + EC457F0C1A19D47700913847 /* NewDrawNoteViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC457F0B1A19D47700913847 /* NewDrawNoteViewController.m */; }; + EC457F0F1A19D78900913847 /* DrawBoardView.m in Sources */ = {isa = PBXBuildFile; fileRef = EC457F0E1A19D78900913847 /* DrawBoardView.m */; }; + EC4FF8DA1A17240E00049173 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4FF8D91A17240E00049173 /* main.m */; }; + EC4FF8DD1A17240E00049173 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4FF8DC1A17240E00049173 /* AppDelegate.m */; }; + EC4FF8E31A17240E00049173 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC4FF8E11A17240E00049173 /* Main.storyboard */; }; + EC4FF8E51A17240E00049173 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC4FF8E41A17240E00049173 /* Images.xcassets */; }; + EC4FF8E81A17240E00049173 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC4FF8E61A17240E00049173 /* LaunchScreen.xib */; }; + EC4FF8F41A17240E00049173 /* NoteBookTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4FF8F31A17240E00049173 /* NoteBookTests.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + EC4FF8EE1A17240E00049173 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC4FF8CC1A17240E00049173 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC4FF8D31A17240E00049173; + remoteInfo = NoteBook; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + EC0383901A17345B0047C77C /* NoteEntity.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoteEntity.h; sourceTree = ""; }; + EC0383911A17345B0047C77C /* NoteEntity.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NoteEntity.m; sourceTree = ""; }; + EC0383931A1736BD0047C77C /* NoteDAO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoteDAO.h; sourceTree = ""; }; + EC0383941A1736BD0047C77C /* NoteDAO.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NoteDAO.m; sourceTree = ""; }; + EC0383961A17392C0047C77C /* SQLiteHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SQLiteHelper.h; sourceTree = ""; }; + EC0383971A17392C0047C77C /* SQLiteHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SQLiteHelper.m; sourceTree = ""; }; + EC0383991A17689C0047C77C /* NewNoteViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewNoteViewController.h; sourceTree = ""; }; + EC03839A1A17689C0047C77C /* NewNoteViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NewNoteViewController.m; sourceTree = ""; }; + EC03839C1A176E2D0047C77C /* MainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MainViewController.h; sourceTree = ""; }; + EC03839D1A176E2D0047C77C /* MainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MainViewController.m; sourceTree = ""; }; + EC03839F1A17784C0047C77C /* libsqlite3.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsqlite3.dylib; path = usr/lib/libsqlite3.dylib; sourceTree = SDKROOT; }; + EC0383A11A1871860047C77C /* NoteDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoteDetailViewController.h; sourceTree = ""; }; + EC0383A21A1871860047C77C /* NoteDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NoteDetailViewController.m; sourceTree = ""; }; + EC0383A41A18795D0047C77C /* NoteTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoteTableViewCell.h; sourceTree = ""; }; + EC0383A51A18795D0047C77C /* NoteTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NoteTableViewCell.m; sourceTree = ""; }; + EC0383A71A189F7B0047C77C /* MobileCoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MobileCoreServices.framework; path = System/Library/Frameworks/MobileCoreServices.framework; sourceTree = SDKROOT; }; + EC0383A91A18C4D30047C77C /* PicNoteDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PicNoteDetailViewController.h; sourceTree = ""; }; + EC0383AA1A18C4D30047C77C /* PicNoteDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PicNoteDetailViewController.m; sourceTree = ""; }; + EC282FF21A1A564D00F4FE9C /* DrawNoteDetailViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawNoteDetailViewController.h; sourceTree = ""; }; + EC282FF31A1A564D00F4FE9C /* DrawNoteDetailViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DrawNoteDetailViewController.m; sourceTree = ""; }; + EC451FBC1A1B3556007B4AB2 /* TakePhotoViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TakePhotoViewController.h; sourceTree = ""; }; + EC451FBD1A1B3556007B4AB2 /* TakePhotoViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TakePhotoViewController.m; sourceTree = ""; }; + EC457F0A1A19D47700913847 /* NewDrawNoteViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NewDrawNoteViewController.h; sourceTree = ""; }; + EC457F0B1A19D47700913847 /* NewDrawNoteViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NewDrawNoteViewController.m; sourceTree = ""; }; + EC457F0D1A19D78900913847 /* DrawBoardView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DrawBoardView.h; sourceTree = ""; }; + EC457F0E1A19D78900913847 /* DrawBoardView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DrawBoardView.m; sourceTree = ""; }; + EC4FF8D41A17240E00049173 /* NoteBook.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = NoteBook.app; sourceTree = BUILT_PRODUCTS_DIR; }; + EC4FF8D81A17240E00049173 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EC4FF8D91A17240E00049173 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + EC4FF8DB1A17240E00049173 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + EC4FF8DC1A17240E00049173 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + EC4FF8E21A17240E00049173 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; + EC4FF8E41A17240E00049173 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + EC4FF8E71A17240E00049173 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; + EC4FF8ED1A17240E00049173 /* NoteBookTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = NoteBookTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + EC4FF8F21A17240E00049173 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EC4FF8F31A17240E00049173 /* NoteBookTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = NoteBookTests.m; sourceTree = ""; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + EC4FF8D11A17240E00049173 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EC0383A81A189F7B0047C77C /* MobileCoreServices.framework in Frameworks */, + EC0383A01A17784C0047C77C /* libsqlite3.dylib in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC4FF8EA1A17240E00049173 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + EC451FB61A1B2600007B4AB2 /* Note */ = { + isa = PBXGroup; + children = ( + EC0383991A17689C0047C77C /* NewNoteViewController.h */, + EC03839A1A17689C0047C77C /* NewNoteViewController.m */, + EC0383A11A1871860047C77C /* NoteDetailViewController.h */, + EC0383A21A1871860047C77C /* NoteDetailViewController.m */, + ); + name = Note; + sourceTree = ""; + }; + EC451FB71A1B2626007B4AB2 /* DB */ = { + isa = PBXGroup; + children = ( + EC0383901A17345B0047C77C /* NoteEntity.h */, + EC0383911A17345B0047C77C /* NoteEntity.m */, + EC0383931A1736BD0047C77C /* NoteDAO.h */, + EC0383941A1736BD0047C77C /* NoteDAO.m */, + EC0383961A17392C0047C77C /* SQLiteHelper.h */, + EC0383971A17392C0047C77C /* SQLiteHelper.m */, + ); + name = DB; + sourceTree = ""; + }; + EC451FB81A1B265B007B4AB2 /* UI */ = { + isa = PBXGroup; + children = ( + EC4FF8E11A17240E00049173 /* Main.storyboard */, + EC4FF8E41A17240E00049173 /* Images.xcassets */, + EC4FF8E61A17240E00049173 /* LaunchScreen.xib */, + ); + name = UI; + sourceTree = ""; + }; + EC451FB91A1B2687007B4AB2 /* Main */ = { + isa = PBXGroup; + children = ( + EC0383A41A18795D0047C77C /* NoteTableViewCell.h */, + EC0383A51A18795D0047C77C /* NoteTableViewCell.m */, + EC03839C1A176E2D0047C77C /* MainViewController.h */, + EC03839D1A176E2D0047C77C /* MainViewController.m */, + ); + name = Main; + sourceTree = ""; + }; + EC451FBA1A1B26A9007B4AB2 /* PicNote */ = { + isa = PBXGroup; + children = ( + EC0383A91A18C4D30047C77C /* PicNoteDetailViewController.h */, + EC0383AA1A18C4D30047C77C /* PicNoteDetailViewController.m */, + EC451FBC1A1B3556007B4AB2 /* TakePhotoViewController.h */, + EC451FBD1A1B3556007B4AB2 /* TakePhotoViewController.m */, + ); + name = PicNote; + sourceTree = ""; + }; + EC451FBB1A1B26C1007B4AB2 /* DrawNote */ = { + isa = PBXGroup; + children = ( + EC457F0A1A19D47700913847 /* NewDrawNoteViewController.h */, + EC457F0B1A19D47700913847 /* NewDrawNoteViewController.m */, + EC457F0D1A19D78900913847 /* DrawBoardView.h */, + EC457F0E1A19D78900913847 /* DrawBoardView.m */, + EC282FF21A1A564D00F4FE9C /* DrawNoteDetailViewController.h */, + EC282FF31A1A564D00F4FE9C /* DrawNoteDetailViewController.m */, + ); + name = DrawNote; + sourceTree = ""; + }; + EC4FF8CB1A17240E00049173 = { + isa = PBXGroup; + children = ( + EC0383A71A189F7B0047C77C /* MobileCoreServices.framework */, + EC03839F1A17784C0047C77C /* libsqlite3.dylib */, + EC4FF8D61A17240E00049173 /* NoteBook */, + EC4FF8F01A17240E00049173 /* NoteBookTests */, + EC4FF8D51A17240E00049173 /* Products */, + ); + sourceTree = ""; + }; + EC4FF8D51A17240E00049173 /* Products */ = { + isa = PBXGroup; + children = ( + EC4FF8D41A17240E00049173 /* NoteBook.app */, + EC4FF8ED1A17240E00049173 /* NoteBookTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + EC4FF8D61A17240E00049173 /* NoteBook */ = { + isa = PBXGroup; + children = ( + EC451FB91A1B2687007B4AB2 /* Main */, + EC451FB61A1B2600007B4AB2 /* Note */, + EC451FBA1A1B26A9007B4AB2 /* PicNote */, + EC451FBB1A1B26C1007B4AB2 /* DrawNote */, + EC451FB81A1B265B007B4AB2 /* UI */, + EC451FB71A1B2626007B4AB2 /* DB */, + EC4FF8DB1A17240E00049173 /* AppDelegate.h */, + EC4FF8DC1A17240E00049173 /* AppDelegate.m */, + EC4FF8D71A17240E00049173 /* Supporting Files */, + ); + path = NoteBook; + sourceTree = ""; + }; + EC4FF8D71A17240E00049173 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EC4FF8D81A17240E00049173 /* Info.plist */, + EC4FF8D91A17240E00049173 /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + EC4FF8F01A17240E00049173 /* NoteBookTests */ = { + isa = PBXGroup; + children = ( + EC4FF8F31A17240E00049173 /* NoteBookTests.m */, + EC4FF8F11A17240E00049173 /* Supporting Files */, + ); + path = NoteBookTests; + sourceTree = ""; + }; + EC4FF8F11A17240E00049173 /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EC4FF8F21A17240E00049173 /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + EC4FF8D31A17240E00049173 /* NoteBook */ = { + isa = PBXNativeTarget; + buildConfigurationList = EC4FF8F71A17240E00049173 /* Build configuration list for PBXNativeTarget "NoteBook" */; + buildPhases = ( + EC4FF8D01A17240E00049173 /* Sources */, + EC4FF8D11A17240E00049173 /* Frameworks */, + EC4FF8D21A17240E00049173 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = NoteBook; + productName = NoteBook; + productReference = EC4FF8D41A17240E00049173 /* NoteBook.app */; + productType = "com.apple.product-type.application"; + }; + EC4FF8EC1A17240E00049173 /* NoteBookTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = EC4FF8FA1A17240E00049173 /* Build configuration list for PBXNativeTarget "NoteBookTests" */; + buildPhases = ( + EC4FF8E91A17240E00049173 /* Sources */, + EC4FF8EA1A17240E00049173 /* Frameworks */, + EC4FF8EB1A17240E00049173 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + EC4FF8EF1A17240E00049173 /* PBXTargetDependency */, + ); + name = NoteBookTests; + productName = NoteBookTests; + productReference = EC4FF8ED1A17240E00049173 /* NoteBookTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + EC4FF8CC1A17240E00049173 /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0610; + ORGANIZATIONNAME = lzh; + TargetAttributes = { + EC4FF8D31A17240E00049173 = { + CreatedOnToolsVersion = 6.1; + }; + EC4FF8EC1A17240E00049173 = { + CreatedOnToolsVersion = 6.1; + TestTargetID = EC4FF8D31A17240E00049173; + }; + }; + }; + buildConfigurationList = EC4FF8CF1A17240E00049173 /* Build configuration list for PBXProject "NoteBook" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = EC4FF8CB1A17240E00049173; + productRefGroup = EC4FF8D51A17240E00049173 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + EC4FF8D31A17240E00049173 /* NoteBook */, + EC4FF8EC1A17240E00049173 /* NoteBookTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + EC4FF8D21A17240E00049173 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC4FF8E31A17240E00049173 /* Main.storyboard in Resources */, + EC4FF8E81A17240E00049173 /* LaunchScreen.xib in Resources */, + EC4FF8E51A17240E00049173 /* Images.xcassets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC4FF8EB1A17240E00049173 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + EC4FF8D01A17240E00049173 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC0383951A1736BD0047C77C /* NoteDAO.m in Sources */, + EC282FF41A1A564D00F4FE9C /* DrawNoteDetailViewController.m in Sources */, + EC0383981A17392C0047C77C /* SQLiteHelper.m in Sources */, + EC03839E1A176E2D0047C77C /* MainViewController.m in Sources */, + EC451FBE1A1B3556007B4AB2 /* TakePhotoViewController.m in Sources */, + EC03839B1A17689C0047C77C /* NewNoteViewController.m in Sources */, + EC457F0F1A19D78900913847 /* DrawBoardView.m in Sources */, + EC457F0C1A19D47700913847 /* NewDrawNoteViewController.m in Sources */, + EC0383A31A1871860047C77C /* NoteDetailViewController.m in Sources */, + EC4FF8DD1A17240E00049173 /* AppDelegate.m in Sources */, + EC0383921A17345B0047C77C /* NoteEntity.m in Sources */, + EC4FF8DA1A17240E00049173 /* main.m in Sources */, + EC0383AB1A18C4D30047C77C /* PicNoteDetailViewController.m in Sources */, + EC0383A61A18795D0047C77C /* NoteTableViewCell.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC4FF8E91A17240E00049173 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC4FF8F41A17240E00049173 /* NoteBookTests.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + EC4FF8EF1A17240E00049173 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC4FF8D31A17240E00049173 /* NoteBook */; + targetProxy = EC4FF8EE1A17240E00049173 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + EC4FF8E11A17240E00049173 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + EC4FF8E21A17240E00049173 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; + EC4FF8E61A17240E00049173 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + EC4FF8E71A17240E00049173 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + EC4FF8F51A17240E00049173 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + }; + name = Debug; + }; + EC4FF8F61A17240E00049173 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + EC4FF8F81A17240E00049173 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = NoteBook/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + EC4FF8F91A17240E00049173 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = NoteBook/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Release; + }; + EC4FF8FB1A17240E00049173 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = NoteBookTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NoteBook.app/NoteBook"; + }; + name = Debug; + }; + EC4FF8FC1A17240E00049173 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = NoteBookTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/NoteBook.app/NoteBook"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + EC4FF8CF1A17240E00049173 /* Build configuration list for PBXProject "NoteBook" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC4FF8F51A17240E00049173 /* Debug */, + EC4FF8F61A17240E00049173 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EC4FF8F71A17240E00049173 /* Build configuration list for PBXNativeTarget "NoteBook" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC4FF8F81A17240E00049173 /* Debug */, + EC4FF8F91A17240E00049173 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EC4FF8FA1A17240E00049173 /* Build configuration list for PBXNativeTarget "NoteBookTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC4FF8FB1A17240E00049173 /* Debug */, + EC4FF8FC1A17240E00049173 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = EC4FF8CC1A17240E00049173 /* Project object */; +} diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook.xcodeproj/project.xcworkspace/contents.xcworkspacedata" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook.xcodeproj/project.xcworkspace/contents.xcworkspacedata" new file mode 100644 index 00000000..a6cf8f90 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook.xcodeproj/project.xcworkspace/contents.xcworkspacedata" @@ -0,0 +1,7 @@ + + + + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/AppDelegate.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/AppDelegate.h" new file mode 100644 index 00000000..5711c762 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/AppDelegate.h" @@ -0,0 +1,19 @@ +// +// AppDelegate.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + + + +@end + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/AppDelegate.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/AppDelegate.m" new file mode 100644 index 00000000..6957a65e --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/AppDelegate.m" @@ -0,0 +1,45 @@ +// +// AppDelegate.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "AppDelegate.h" + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Base.lproj/LaunchScreen.xib" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Base.lproj/LaunchScreen.xib" new file mode 100644 index 00000000..f0431d72 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Base.lproj/LaunchScreen.xib" @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Base.lproj/Main.storyboard" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Base.lproj/Main.storyboard" new file mode 100644 index 00000000..1bc0f4f3 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Base.lproj/Main.storyboard" @@ -0,0 +1,366 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawBoardView.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawBoardView.h" new file mode 100644 index 00000000..6d46c6c6 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawBoardView.h" @@ -0,0 +1,32 @@ +// +// DrawBoardView.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/17. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface DrawBoardView : UIView + +@property (strong, nonatomic) UIColor *drawColor; + +-(BOOL)writeToFile:(NSString*) filePath; +-(void)readFromFile:(NSString*) filePath; + +@end + +@interface DrawPoint : NSObject +@property (nonatomic) CGPoint point; +-(instancetype) initWithCGPoint:(CGPoint)point; +@end + + +@interface DrawStroke : NSObject +@property (nonatomic)CGMutablePathRef pathRef; +@property (strong, nonatomic)NSMutableArray* drawPoints; +-(instancetype)initWithStartCGPoint:(CGPoint)point; +-(void)addCGPoint:(CGPoint)point; +-(void)drawContext:(CGContextRef)context; +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawBoardView.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawBoardView.m" new file mode 100644 index 00000000..e21f2d8d --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawBoardView.m" @@ -0,0 +1,137 @@ +// +// DrawBoardView.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/17. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "DrawBoardView.h" +#import + +@implementation DrawBoardView +{ + NSMutableArray* _drawStrokes; +} + +-(BOOL)writeToFile:(NSString*)filePath { + NSLog(@"archiveRootObject return %d", [NSKeyedArchiver archiveRootObject:_drawStrokes toFile:filePath]); + return [[NSFileManager defaultManager] fileExistsAtPath:filePath]; +} + +-(void)readFromFile:(NSString*) filePath { + _drawStrokes = [NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; + [self setNeedsDisplay]; +} + +-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + if(_drawStrokes == nil) { + _drawStrokes = [NSMutableArray new]; + } + UITouch *touch = [touches anyObject]; + CGPoint touchPoint = [touch locationInView:self]; + DrawStroke* stroke = [[DrawStroke alloc] initWithStartCGPoint:touchPoint]; + [_drawStrokes addObject:stroke]; + [self setNeedsDisplay]; +} + +-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { + DrawStroke* stroke = [_drawStrokes lastObject]; + UITouch *touch = [touches anyObject]; + CGPoint touchPoint = [touch locationInView:self]; + [stroke addCGPoint:touchPoint]; + [self setNeedsDisplay]; +} + +-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { + DrawStroke* stroke = [_drawStrokes lastObject]; + UITouch *touch = [touches anyObject]; + CGPoint touchPoint = [touch locationInView:self]; + [stroke addCGPoint:touchPoint]; + [self setNeedsDisplay]; +} + + +- (void)drawRect:(CGRect)rect { + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextSetLineWidth(context, 2.0); + CGContextSetLineCap(context, kCGLineCapRound); + CGContextSetStrokeColorWithColor(context, self.drawColor.CGColor); + for(DrawStroke *stroke in _drawStrokes) { + [stroke drawContext:context]; + } + CGContextStrokePath(context); +} + + +@end + +@implementation DrawPoint + +-(instancetype) initWithCGPoint:(CGPoint)point { + self = [super init]; + self.point = point; + return self; +} + +-(id)initWithCoder:(NSCoder *)aDecoder { + self = [super init]; + CGFloat x = (CGFloat)[aDecoder decodeDoubleForKey:@"x"]; + CGFloat y = (CGFloat)[aDecoder decodeDoubleForKey:@"y"]; + self.point = CGPointMake(x, y); + return self; +} + +-(void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeDouble:(double)self.point.x forKey:@"x"]; + [aCoder encodeDouble:(double)self.point.y forKey:@"y"]; +} + +@end + + +@implementation DrawStroke + +-(instancetype)initWithStartCGPoint:(CGPoint)point { + self = [super init]; + self.pathRef = CGPathCreateMutable(); + CGPathMoveToPoint(self.pathRef, NULL, point.x, point.y); + self.drawPoints = [NSMutableArray new]; + [self.drawPoints addObject:[[DrawPoint alloc] initWithCGPoint:point]]; + return self; +} +-(id)initWithCoder:(NSCoder *)aDecoder { + self = [super init]; + self.pathRef = CGPathCreateMutable(); + self.drawPoints = [aDecoder decodeObjectForKey:@"drawPoints"]; + DrawPoint *startDrawPoint = [self.drawPoints objectAtIndex:0]; + CGPoint startPoint = CGPointMake(startDrawPoint.point.x, startDrawPoint.point.y); + CGPathMoveToPoint(self.pathRef, NULL, startPoint.x, startPoint.y); + for(NSInteger i = 1; i < [self.drawPoints count]; ++i) { + DrawPoint *drawPoint = [self.drawPoints objectAtIndex:i]; + CGPoint point = CGPointMake(drawPoint.point.x, drawPoint.point.y); + CGPathAddLineToPoint(self.pathRef, NULL, point.x, point.y); + } + return self; +} + +-(void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeObject:self.drawPoints forKey:@"drawPoints"]; +} + +-(void)addCGPoint:(CGPoint)point { + CGPathAddLineToPoint(self.pathRef, NULL, point.x, point.y); + [self.drawPoints addObject:[[DrawPoint alloc] initWithCGPoint:point]]; +} + +-(void)drawContext:(CGContextRef)context { + CGContextAddPath(context, self.pathRef); +} + +-(void)dealloc{ + CGPathRelease(self.pathRef); +} + +@end + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawNoteDetailViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawNoteDetailViewController.h" new file mode 100644 index 00000000..fb6b950f --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawNoteDetailViewController.h" @@ -0,0 +1,18 @@ +// +// DrawNoteDetailViewController.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/18. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "DrawBoardView.h" +#import "NoteEntity.h" + +@interface DrawNoteDetailViewController : UIViewController + +@property (weak, nonatomic) IBOutlet DrawBoardView *drawBoardView; +@property (strong, nonatomic) NoteEntity *noteEntity; +- (IBAction)modifyDrawNote:(id)sender; +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawNoteDetailViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawNoteDetailViewController.m" new file mode 100644 index 00000000..0c951192 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/DrawNoteDetailViewController.m" @@ -0,0 +1,34 @@ +// +// DrawNoteDetailViewController.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/18. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "DrawNoteDetailViewController.h" + +@interface DrawNoteDetailViewController () + +@end + +@implementation DrawNoteDetailViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + if(self.noteEntity.type == DrawNote) { + [self.drawBoardView readFromFile: self.noteEntity.content]; + } +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + + +- (IBAction)modifyDrawNote:(id)sender { + [self.drawBoardView writeToFile:self.noteEntity.content]; + [self.navigationController popViewControllerAnimated:YES]; +} +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/Contents.json" new file mode 100644 index 00000000..dda1c1e9 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/Contents.json" @@ -0,0 +1,112 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "57x57", + "scale" : "1x" + }, + { + "idiom" : "iphone", + "size" : "57x57", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "iphone@2x.png", + "scale" : "2x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "iphone@3x.png", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "50x50", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "50x50", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "72x72", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "72x72", + "scale" : "2x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "ipad@1x.png", + "scale" : "1x" + }, + { + "size" : "76x76", + "idiom" : "ipad", + "filename" : "ipad@2x.png", + "scale" : "2x" + }, + { + "idiom" : "car", + "size" : "120x120", + "scale" : "1x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/ipad@1x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/ipad@1x.png" new file mode 100644 index 00000000..b35b703f Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/ipad@1x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/ipad@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/ipad@2x.png" new file mode 100644 index 00000000..94586b67 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/ipad@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/iphone@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/iphone@2x.png" new file mode 100644 index 00000000..44075753 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/iphone@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/iphone@3x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/iphone@3x.png" new file mode 100644 index 00000000..0b3f97f7 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/AppIcon.appiconset/iphone@3x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/Contents.json" new file mode 100644 index 00000000..b6a1fe54 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/Contents.json" @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "about@1x.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "about@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "about@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/about@1x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/about@1x.png" new file mode 100644 index 00000000..f7cb8f0e Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/about@1x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/about@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/about@2x.png" new file mode 100644 index 00000000..90e5cd77 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/about@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/about@3x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/about@3x.png" new file mode 100644 index 00000000..b3909680 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/about.imageset/about@3x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/Contents.json" new file mode 100644 index 00000000..629358ed --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/Contents.json" @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "note@1x.png" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "note@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x", + "filename" : "note@3x.png" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/note@1x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/note@1x.png" new file mode 100644 index 00000000..882340ff Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/note@1x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/note@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/note@2x.png" new file mode 100644 index 00000000..36671e78 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/note@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/note@3x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/note@3x.png" new file mode 100644 index 00000000..5286a840 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Images.xcassets/note.imageset/note@3x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Info.plist" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Info.plist" new file mode 100644 index 00000000..3a7bb582 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/Info.plist" @@ -0,0 +1,40 @@ + + + + + CFBundleDevelopmentRegion + zh_CN + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + cstlab.lzh.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/MainViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/MainViewController.h" new file mode 100644 index 00000000..15edb6f7 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/MainViewController.h" @@ -0,0 +1,15 @@ +// +// MainViewController.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface MainViewController : UIViewController + +@property (weak, nonatomic) IBOutlet UITableView *noteTableView; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/MainViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/MainViewController.m" new file mode 100644 index 00000000..e4e515b7 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/MainViewController.m" @@ -0,0 +1,108 @@ +// +// MainViewController.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "MainViewController.h" +#import "NoteEntity.h" +#import "NoteDAO.h" +#import "NoteTableViewCell.h" + +@interface MainViewController () + +@end + +@implementation MainViewController +{ + NoteDAO* _noteDAO; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + _noteDAO = [NoteDAO new]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +- (void)viewWillAppear:(BOOL)animated +{ + [super viewWillAppear:animated]; + [self.noteTableView reloadData]; +} + +- (NSInteger)tableView:(UITableView *)tableView + numberOfRowsInSection:(NSInteger)section +{ + return [_noteDAO getAllCount]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView + cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + static NSString *CellIdentifier = @"NoteListCell"; + UITableViewCell *cell = [tableView + dequeueReusableCellWithIdentifier:CellIdentifier]; + if(cell == nil) // 回收双端队列中没有元素,新建元素 + cell = [[NoteTableViewCell alloc] + initWithStyle:UITableViewCellStyleDefault + reuseIdentifier:CellIdentifier]; + NoteEntity *note = [_noteDAO loadNoteByOffset:indexPath.row]; + if(note.type == WordNote) { + cell.textLabel.text = note.content; + } + else if(note.type == PicNote) { + cell.textLabel.text = @"[图片]"; + } + else if(note.type == DrawNote) { + cell.textLabel.text = @"[涂鸦]"; + } + else { + cell.textLabel.text = note.content; + } + [cell setValue:note forKey:@"noteEntity"]; + return cell; +} + +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + if (editingStyle == UITableViewCellEditingStyleDelete) { + NoteEntity* note = [[tableView cellForRowAtIndexPath:indexPath] valueForKey:@"noteEntity"]; + [_noteDAO deleteNoteById:note.id]; + [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObjects:indexPath, nil] withRowAnimation:UITableViewRowAnimationTop]; + } +} + +- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath +{ + return @"删除"; +} + +-(void)tableView:(UITableView *)tableView +didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + NoteEntity *note = [[tableView cellForRowAtIndexPath:indexPath] valueForKey:@"noteEntity"]; + if(note.type == WordNote) { + [self performSegueWithIdentifier:@"noteDetailSegue" sender:note]; + } + else if(note.type == PicNote) { + [self performSegueWithIdentifier:@"picNoteDetailSegue" sender:note]; + } + else if(note.type == DrawNote) { + [self performSegueWithIdentifier:@"drawNoteDetailSegue" sender:note]; + } +} + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + UIViewController *destination = segue.destinationViewController; + if ([segue.identifier isEqualToString:@"noteDetailSegue"] || [segue.identifier isEqualToString:@"picNoteDetailSegue"] || [segue.identifier isEqualToString:@"drawNoteDetailSegue"]) + [destination setValue:sender forKeyPath:@"noteEntity"]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewDrawNoteViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewDrawNoteViewController.h" new file mode 100644 index 00000000..ca3553d8 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewDrawNoteViewController.h" @@ -0,0 +1,16 @@ +// +// DrawBoardViewController.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/17. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "DrawBoardView.h" + +@interface NewDrawNoteViewController : UIViewController + +@property (weak, nonatomic) IBOutlet DrawBoardView *drawBoardView; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewDrawNoteViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewDrawNoteViewController.m" new file mode 100644 index 00000000..e7e1200b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewDrawNoteViewController.m" @@ -0,0 +1,51 @@ +// +// DrawBoardViewController.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/17. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "NewDrawNoteViewController.h" +#import "NoteEntity.h" +#import "NoteDAO.h" + +@interface NewDrawNoteViewController () + +@end + +@implementation NewDrawNoteViewController +{ + NoteDAO* _noteDAO; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + _noteDAO = [NoteDAO new]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +- (IBAction)saveDrawNote:(id)sender { + NSString *drawPath = [[NSHomeDirectory() stringByAppendingPathComponent:@"Documents"] stringByAppendingPathComponent:@"draw_note"]; + NSFileManager *fileManager = [NSFileManager defaultManager]; + [fileManager createDirectoryAtPath:drawPath withIntermediateDirectories:YES attributes:nil error:nil]; + NSDateFormatter *dateFormatter = [NSDateFormatter new]; + [dateFormatter setDateFormat:@"yyyy_MM_dd_HH_mm_ss_SSSS"]; + NSDate* nowDate = [[NSDate alloc] init]; + NSString *drawFilePath = [drawPath stringByAppendingFormat:@"/%@.%@", [dateFormatter stringFromDate:nowDate], @"draw"]; + if([self.drawBoardView writeToFile:drawFilePath]) { + NoteEntity* note = [[NoteEntity alloc] initWithType:DrawNote andContent:drawFilePath]; + [_noteDAO insertNote:note]; + NSLog(@"draw note write to file success, file path is %@", drawFilePath); + } + else { + NSLog(@"draw note write to file failed, file path is %@", drawFilePath); + } + [self.navigationController popViewControllerAnimated:YES]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewNoteViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewNoteViewController.h" new file mode 100644 index 00000000..b83495bb --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewNoteViewController.h" @@ -0,0 +1,17 @@ +// +// NewNoteViewController.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface NewNoteViewController : UIViewController + +@property (weak, nonatomic) IBOutlet UITextView *noteContentTextView; + +- (IBAction)saveNote:(id)sender; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewNoteViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewNoteViewController.m" new file mode 100644 index 00000000..0e6b040d --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NewNoteViewController.m" @@ -0,0 +1,49 @@ +// +// NewNoteViewController.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "NewNoteViewController.h" +#import "NoteEntity.h" +#import "NoteDAO.h" + +@interface NewNoteViewController () + +@end + +@implementation NewNoteViewController +{ + NoteDAO* _noteDAO; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + _noteDAO = [NoteDAO new]; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +- (IBAction)saveNote:(id)sender { + NoteEntity *newNote = [[NoteEntity alloc] initWithType:WordNote andContent:[self.noteContentTextView text]]; + [_noteDAO insertNote:newNote]; + [self.navigationController popViewControllerAnimated:true]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDAO.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDAO.h" new file mode 100644 index 00000000..16226ff2 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDAO.h" @@ -0,0 +1,25 @@ +// +// NoteDAO.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "NoteEntity.h" + +@interface NoteDAO : NSObject + +-(instancetype) init; +-(void) createTable; +-(void) insertNote:(NoteEntity*) noteEntity; +-(void) deleteNoteById:(NSInteger) id; +-(void) updateNote:(NoteEntity*) noteEntity; +-(NSMutableArray*) queryNoteByOffset:(NSInteger) offset andLength:(NSInteger) length; +-(NoteEntity*) loadNoteByOffset:(NSInteger) offset; +-(NoteEntity*) loadNoteById:(NSInteger) id; +-(NSInteger) getAllCount; +-(void) dealloc; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDAO.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDAO.m" new file mode 100644 index 00000000..c8a364b8 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDAO.m" @@ -0,0 +1,168 @@ +// +// NoteDAO.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "NoteDAO.h" +#import "SQLiteHelper.h" + +@implementation NoteDAO + +-(instancetype)init { + self = [super init]; + [self createTable]; + return self; +} + +-(void) createTable { + char *errorMsg; + if (sqlite3_exec([SQLiteHelper getDBHandle], "create table if not exists tb_note (id integer primary key autoincrement,type integer, content text not null);", NULL, NULL, &errorMsg)!=SQLITE_OK) { + NSLog(@"create table error:%s", errorMsg); + } + else{ + NSLog(@"create table success"); + } + sqlite3_free(errorMsg); +} + +-(void) insertNote:(NoteEntity*) noteEntity { + char *sql = "insert into tb_note(type, content) values(?, ?);"; + sqlite3_stmt *statement; + if(sqlite3_prepare_v2([SQLiteHelper getDBHandle], sql, -1, &statement, NULL)!=SQLITE_OK) { + NSLog(@"insert sql step failed"); + return; + } + sqlite3_bind_int(statement, 1, noteEntity.type); + const char *content = [noteEntity.content cStringUsingEncoding:NSUTF8StringEncoding]; + sqlite3_bind_text(statement, 2, content, (int)strlen(content), SQLITE_STATIC); + int stepResult = sqlite3_step(statement); + if (stepResult!=SQLITE_DONE) { + NSLog(@"insert sql step failed, step result is %d", stepResult); + } + else { + NSLog(@"insert sql step success"); + } + sqlite3_finalize(statement); +} + +-(void) deleteNoteById:(NSInteger) id { + char *sql = "delete from tb_note where id = ?"; + sqlite3_stmt *statement; + if(sqlite3_prepare_v2([SQLiteHelper getDBHandle], sql, -1, &statement, NULL)!=SQLITE_OK) { + NSLog(@"delete sql prepare failed"); + return; + } + sqlite3_bind_int(statement, 1, (int)id); + if (sqlite3_step(statement)!=SQLITE_DONE) { + sqlite3_finalize(statement); + NSLog(@"delete sql step failed"); + return; + } + sqlite3_finalize(statement); +} + +-(void) updateNote:(NoteEntity*) noteEntity { + char *sql = "update tb_note set content = ? where id = ?"; + sqlite3_stmt *statement; + if(sqlite3_prepare_v2([SQLiteHelper getDBHandle], sql, -1, &statement, NULL)!=SQLITE_OK) { + NSLog(@"update sql prepare failed"); + return; + } + const char *content = [noteEntity.content cStringUsingEncoding:NSUTF8StringEncoding]; + sqlite3_bind_text(statement, 1, content, (int)strlen(content), SQLITE_STATIC); + sqlite3_bind_int(statement, 2, (int)noteEntity.id); + if (sqlite3_step(statement)!=SQLITE_DONE) { + sqlite3_finalize(statement); + NSLog(@"update sql step failed"); + return; + } + sqlite3_finalize(statement); +} + +-(NSMutableArray*) queryNoteByOffset:(NSInteger) offset andLength:(NSInteger) length { + char *sql = "select id, type, content from tb_note order by id limit ?, ?"; + sqlite3_stmt *statement; + if(sqlite3_prepare_v2([SQLiteHelper getDBHandle], sql, -1, &statement, NULL)!=SQLITE_OK) { + NSLog(@"query sql prepare failed"); + return nil; + } + sqlite3_bind_int(statement, 1, (int)offset); + sqlite3_bind_int(statement, 2, (int)length); + NSMutableArray *result = [NSMutableArray new]; + while(sqlite3_step(statement) == SQLITE_ROW) { + NoteEntity *note = [NoteEntity new]; + note.id = sqlite3_column_int(statement, 0); + note.type = sqlite3_column_int(statement, 1); + note.content = [[NSString alloc] initWithCString:(const char*)sqlite3_column_text(statement, 2) encoding:NSUTF8StringEncoding]; + [result addObject:note]; + } + sqlite3_finalize(statement); + return result; +} + +-(NoteEntity*) loadNoteByOffset:(NSInteger) offset { + char *sql = "select id, type, content from tb_note order by id desc limit 1 offset ?"; + sqlite3_stmt *statement; + if(sqlite3_prepare_v2([SQLiteHelper getDBHandle], sql, -1, &statement, NULL)!=SQLITE_OK) { + NSLog(@"query sql prepare failed"); + return nil; + } + sqlite3_bind_int(statement, 1, (int)offset); + NoteEntity *note = nil; + int stepResult = sqlite3_step(statement); + if(stepResult == SQLITE_ROW) { + note = [NoteEntity new]; + note.id = sqlite3_column_int(statement, 0); + note.type = sqlite3_column_int(statement, 1); + note.content = [[NSString alloc] initWithCString:(const char*)sqlite3_column_text(statement, 2) encoding:NSUTF8StringEncoding]; + } + else { + NSLog(@"load note by offset not found, step result is %d", stepResult); + } + sqlite3_finalize(statement); + return note; +} + +-(NoteEntity*) loadNoteById:(NSInteger) id { + char *sql = "select id, type, content from tb_note where id = ?"; + sqlite3_stmt *statement; + if(sqlite3_prepare_v2([SQLiteHelper getDBHandle], sql, -1, &statement, NULL)!=SQLITE_OK) { + NSLog(@"load sql prepare failed"); + return nil; + } + sqlite3_bind_int(statement, 0, (int)id); + if(sqlite3_step(statement) == SQLITE_ROW) { + NoteEntity *note = [NoteEntity new]; + note.id = sqlite3_column_int(statement, 0); + note.type = sqlite3_column_int(statement, 1); + note.content = [[NSString alloc] initWithCString:(const char*)sqlite3_column_text(statement, 2) encoding:NSUTF8StringEncoding]; + return note; + } + return nil; +} + +-(NSInteger) getAllCount { + char *sql = "select count(*) from tb_note"; + sqlite3_stmt *statement; + if(sqlite3_prepare_v2([SQLiteHelper getDBHandle], sql, -1, &statement, NULL)!=SQLITE_OK) { + NSLog(@"get all count sql prepare failed"); + return 0; + } + NSInteger allCount = 0; + if(sqlite3_step(statement) == SQLITE_ROW) { + allCount = sqlite3_column_int(statement, 0); + } + sqlite3_finalize(statement); + return allCount; + +} + +-(void) dealloc { + [SQLiteHelper relaseDBHandle]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDetailViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDetailViewController.h" new file mode 100644 index 00000000..adec227c --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDetailViewController.h" @@ -0,0 +1,18 @@ +// +// NoteDetailViewController.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/16. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "NoteEntity.h" + +@interface NoteDetailViewController : UIViewController + +@property (weak, nonatomic) IBOutlet UITextView *noteContentTextView; +@property (strong, nonatomic) NoteEntity *noteEntity; +- (IBAction)modifyNote:(id)sender; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDetailViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDetailViewController.m" new file mode 100644 index 00000000..816cfffa --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteDetailViewController.m" @@ -0,0 +1,37 @@ +// +// NoteDetailViewController.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/16. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "NoteDetailViewController.h" +#import "NoteDAO.h" + +@interface NoteDetailViewController () +{ + NoteDAO *_noteDAO; +} + +@end + +@implementation NoteDetailViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + _noteDAO = [NoteDAO new]; + self.noteContentTextView.text = self.noteEntity.content; +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +- (IBAction)modifyNote:(id)sender { + self.noteEntity.content = self.noteContentTextView.text; + [_noteDAO updateNote:self.noteEntity]; + [self.navigationController popViewControllerAnimated:YES]; +} +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteEntity.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteEntity.h" new file mode 100644 index 00000000..3c711a0f --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteEntity.h" @@ -0,0 +1,25 @@ +// +// NoteEntity.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +typedef NS_ENUM(NSInteger, NoteEntityType) { // 笔记类型 + WordNote, // 纯文字笔记 + PicNote, // 图片笔记 + DrawNote // 涂鸦笔记 +}; + +@interface NoteEntity : NSObject + +@property NSInteger id; +@property NoteEntityType type; +@property (copy) NSString* content; + +-(instancetype) initWithType:(NoteEntityType) type andContent:(NSString*) content; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteEntity.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteEntity.m" new file mode 100644 index 00000000..2799aeeb --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteEntity.m" @@ -0,0 +1,20 @@ +// +// NoteEntity.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "NoteEntity.h" + +@implementation NoteEntity + +-(instancetype) initWithType:(NoteEntityType) type andContent:(NSString*) content { + self = [super init]; + self.type = type; + self.content = content; + return self; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteTableViewCell.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteTableViewCell.h" new file mode 100644 index 00000000..ee50b19f --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteTableViewCell.h" @@ -0,0 +1,16 @@ +// +// NoteTableViewCell.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/16. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "NoteEntity.h" + +@interface NoteTableViewCell : UITableViewCell + +@property (strong, nonatomic) NoteEntity *noteEntity; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteTableViewCell.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteTableViewCell.m" new file mode 100644 index 00000000..46871762 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/NoteTableViewCell.m" @@ -0,0 +1,23 @@ +// +// NoteTableViewCell.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/16. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "NoteTableViewCell.h" + +@implementation NoteTableViewCell + +- (void)awakeFromNib { + // Initialization code +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/PicNoteDetailViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/PicNoteDetailViewController.h" new file mode 100644 index 00000000..1523531e --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/PicNoteDetailViewController.h" @@ -0,0 +1,17 @@ +// +// PicNoteViewController.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/16. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "NoteEntity.h" + +@interface PicNoteDetailViewController : UIViewController + +@property (weak, nonatomic) IBOutlet UIImageView *noteImageView; +@property (strong, nonatomic) NoteEntity *noteEntity; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/PicNoteDetailViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/PicNoteDetailViewController.m" new file mode 100644 index 00000000..615b6d26 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/PicNoteDetailViewController.m" @@ -0,0 +1,29 @@ +// +// PicNoteViewController.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/16. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "PicNoteDetailViewController.h" + +@interface PicNoteDetailViewController () + +@end + +@implementation PicNoteDetailViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + if(self.noteEntity.type == PicNote) { + UIImage *image=[[UIImage alloc]initWithContentsOfFile:self.noteEntity.content]; + self.noteImageView.image = image; + } +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/SQLiteHelper.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/SQLiteHelper.h" new file mode 100644 index 00000000..725e2ce1 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/SQLiteHelper.h" @@ -0,0 +1,16 @@ +// +// SQLiteConnection.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import + +// 非线程安全 +@interface SQLiteHelper : NSObject ++ (sqlite3 *) getDBHandle; ++ (void) relaseDBHandle; +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/SQLiteHelper.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/SQLiteHelper.m" new file mode 100644 index 00000000..c1c2dae4 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/SQLiteHelper.m" @@ -0,0 +1,54 @@ +// +// SQLiteConnection.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "SQLiteHelper.h" + +static sqlite3 *dbHandle = nil; + +@implementation SQLiteHelper + ++ (sqlite3 *) getDBHandle { + if(dbHandle == nil) { + NSString *dbPath=[NSString stringWithFormat:@"%@/Documents/note_book.db",NSHomeDirectory()]; + if(sqlite3_open([dbPath UTF8String], &dbHandle)==SQLITE_OK) { + NSLog(@"打开数据库成功!"); + } + } + return dbHandle; +} + ++ (void) relaseDBHandle{ + NSLog(@"关闭数据库中!"); + int closeResult = sqlite3_close(dbHandle); + if(closeResult==SQLITE_OK){ + NSLog(@"关闭数据库成功!"); + dbHandle = nil; + } + else if(closeResult == SQLITE_BUSY) + { + // shouldn't happen in a good written application but let's handle it + NSLog(@"sqlite is busy, try to finalize some stmts"); + sqlite3_stmt *stmt; + while ((stmt = sqlite3_next_stmt(dbHandle, NULL)) != NULL) { + sqlite3_finalize(stmt); + } + closeResult = sqlite3_close(dbHandle); + if (closeResult == SQLITE_OK) { + NSLog(@"close db success"); + dbHandle = nil; + } + else { + NSLog(@"close db failed, colse result is %d", closeResult); + } + } + else { + NSLog(@"close db failed, colse result is %d", closeResult); + } +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/TakePhotoViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/TakePhotoViewController.h" new file mode 100644 index 00000000..e661caf9 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/TakePhotoViewController.h" @@ -0,0 +1,13 @@ +// +// TakePhotoViewController.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/18. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface TakePhotoViewController : UIImagePickerController + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/TakePhotoViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/TakePhotoViewController.m" new file mode 100644 index 00000000..4c953b94 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/TakePhotoViewController.m" @@ -0,0 +1,66 @@ +// +// TakePhotoViewController.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/18. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "TakePhotoViewController.h" +#import "NoteDAO.h" +#import "NoteEntity.h" + +@interface TakePhotoViewController () + +@end + +@implementation TakePhotoViewController +{ + NoteDAO* _noteDAO; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + _noteDAO = [NoteDAO new]; + if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { + self.sourceType = UIImagePickerControllerSourceTypeCamera; + self.mediaTypes = [UIImagePickerController availableMediaTypesForSourceType:self.sourceType]; + self.delegate = self; + self.allowsEditing = YES; + } + +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; +} + +-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info +{ + if ([[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:(NSString*)kUTTypeImage]) { + UIImage *image = [info objectForKey:UIImagePickerControllerOriginalImage]; + NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0]; + NSLog(@"doc path is %@", docPath); + NSString *imagePath = [docPath stringByAppendingPathComponent:@"image"]; + NSFileManager *fileManager = [NSFileManager defaultManager]; + [fileManager createDirectoryAtPath:imagePath withIntermediateDirectories:YES attributes:nil error:nil]; + NSDateFormatter *dateFormatter = [NSDateFormatter new]; + [dateFormatter setDateFormat:@"yyyy_MM_dd_HH_mm_ss_SSSS"]; + NSDate* nowDate = [[NSDate alloc] init]; + NSString *imageFilePath = [imagePath stringByAppendingFormat:@"/%@.%@", [dateFormatter stringFromDate:nowDate], @"jpg"]; + + NSData *imageData = UIImageJPEGRepresentation(image, 1); + if([imageData writeToFile:imageFilePath atomically:YES]) { + NSLog(@"image write to file success, file is %@", imageFilePath); + NoteEntity *note = [[NoteEntity alloc] initWithType:PicNote andContent:imageFilePath]; + [_noteDAO insertNote:note]; + } + else { + NSLog(@"image wiret to file failed, file is %@", imageFilePath); + } + } + [picker dismissViewControllerAnimated:YES completion:nil]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/ViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/ViewController.h" new file mode 100644 index 00000000..4df414df --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/ViewController.h" @@ -0,0 +1,15 @@ +// +// ViewController.h +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface ViewController : UITabBarController + + +@end + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/ViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/ViewController.m" new file mode 100644 index 00000000..79ddbc5a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/ViewController.m" @@ -0,0 +1,27 @@ +// +// ViewController.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "ViewController.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view, typically from a nib. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/main.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/main.m" new file mode 100644 index 00000000..f830ca6a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBook/main.m" @@ -0,0 +1,16 @@ +// +// main.m +// NoteBook +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBookTests/Info.plist" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBookTests/Info.plist" new file mode 100644 index 00000000..dd0bff1c --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBookTests/Info.plist" @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + cstlab.lzh.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBookTests/NoteBookTests.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBookTests/NoteBookTests.m" new file mode 100644 index 00000000..b8d5fe70 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/Project4/NoteBookTests/NoteBookTests.m" @@ -0,0 +1,40 @@ +// +// NoteBookTests.m +// NoteBookTests +// +// Created by 陆钟豪 on 14/11/15. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import + +@interface NoteBookTests : XCTestCase + +@end + +@implementation NoteBookTests + +- (void)setUp { + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. + [super tearDown]; +} + +- (void)testExample { + // This is an example of a functional test case. + XCTAssert(YES, @"Pass"); +} + +- (void)testPerformanceExample { + // This is an example of a performance test case. + [self measureBlock:^{ + // Put the code you want to measure the time of here. + }]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/.gitignore" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/.gitignore" new file mode 100644 index 00000000..5702fd75 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/.gitignore" @@ -0,0 +1,70 @@ +# Created by https://www.gitignore.io + +### OSX ### +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear on external disk +.Spotlight-V100 +.Trashes + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk + + +### Xcode ### +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.xcuserstate + + +### Objective-C ### +# Xcode +# +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate + +# CocoaPods +# +# We recommend against adding the Pods directory to your .gitignore. However +# you should judge for yourself, the pros and cons are mentioned at: +# http://guides.cocoapods.org/using/using-cocoapods.html#should-i-ignore-the-pods-directory-in-source-control +# +Pods/ + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/Podfile" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/Podfile" new file mode 100644 index 00000000..638e6575 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/Podfile" @@ -0,0 +1,11 @@ +source 'https://github.com/CocoaPods/Specs.git' + +target 'iHabit' do + pod 'MagicalRecord', '~> 2.2' +end + +target 'iHabitTests' do + pod 'MagicalRecord', '~> 2.2' +end + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/Podfile.lock" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/Podfile.lock" new file mode 100644 index 00000000..31a2df0b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/Podfile.lock" @@ -0,0 +1,12 @@ +PODS: + - MagicalRecord (2.2): + - MagicalRecord/Core (= 2.2) + - MagicalRecord/Core (2.2) + +DEPENDENCIES: + - MagicalRecord (~> 2.2) + +SPEC CHECKSUMS: + MagicalRecord: 2b471584fc9e3137f3d0a56967917baa4979e224 + +COCOAPODS: 0.35.0 diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit.xcodeproj/project.pbxproj" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit.xcodeproj/project.pbxproj" new file mode 100644 index 00000000..64a0feea --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit.xcodeproj/project.pbxproj" @@ -0,0 +1,725 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 4BBC0F4413DC9B9C8D5D144C /* libPods-iHabit.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 4999720AA74C0E5AD0D5903C /* libPods-iHabit.a */; }; + 96A42CF94F461F5F5B9D86EC /* libPods-iHabitTests.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FE5D40FCFC579DA59F6D2237 /* libPods-iHabitTests.a */; }; + CDE29E691A417BFF00DEE2AB /* LineView.m in Sources */ = {isa = PBXBuildFile; fileRef = CDE29E681A417BFF00DEE2AB /* LineView.m */; }; + CDE29E6C1A41B24100DEE2AB /* GridPickerViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = CDE29E6B1A41B24100DEE2AB /* GridPickerViewController.m */; }; + EC22BC9F1A43F92C00515CA9 /* TimesPickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC22BC9E1A43F92C00515CA9 /* TimesPickerController.m */; }; + EC22BCA21A43FE6D00515CA9 /* PeriodPickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC22BCA11A43FE6D00515CA9 /* PeriodPickerController.m */; }; + EC2466E71A412F6A0046CB2C /* HabitMainViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC2466E61A412F6A0046CB2C /* HabitMainViewController.m */; }; + EC402A7C1A456C27008ABFAE /* IconPickerController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC402A7B1A456C27008ABFAE /* IconPickerController.m */; }; + EC4C42E61A2EDAEA00A82D8D /* iHabitDB.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = EC4C42E41A2EDAEA00A82D8D /* iHabitDB.xcdatamodeld */; }; + EC4C42E71A2EDAEA00A82D8D /* iHabitDB.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = EC4C42E41A2EDAEA00A82D8D /* iHabitDB.xcdatamodeld */; }; + EC4C42EA1A2EE35700A82D8D /* HistoryPeriod.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4C42E91A2EE35700A82D8D /* HistoryPeriod.m */; }; + EC4C42EB1A2EE35700A82D8D /* HistoryPeriod.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4C42E91A2EE35700A82D8D /* HistoryPeriod.m */; }; + EC4C42EE1A2EE35800A82D8D /* HistoryAction.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4C42ED1A2EE35800A82D8D /* HistoryAction.m */; }; + EC4C42EF1A2EE35800A82D8D /* HistoryAction.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4C42ED1A2EE35800A82D8D /* HistoryAction.m */; }; + EC4C42F61A2EEE6200A82D8D /* HabitTableViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4C42F51A2EEE6200A82D8D /* HabitTableViewController.m */; }; + EC4C42F91A2EFB3E00A82D8D /* HabitTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4C42F81A2EFB3E00A82D8D /* HabitTableViewCell.m */; }; + EC4C42FC1A2EFE0F00A82D8D /* HabitTableCellViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4C42FB1A2EFE0F00A82D8D /* HabitTableCellViewController.m */; }; + EC4C43021A2F254E00A82D8D /* TimeLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4C43011A2F254E00A82D8D /* TimeLineView.m */; }; + EC4C430B1A30953D00A82D8D /* Raleway_Medium_Tracked.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EC4C43091A30953D00A82D8D /* Raleway_Medium_Tracked.ttf */; }; + EC4C430C1A30953D00A82D8D /* Raleway_Regular_Tracked.ttf in Resources */ = {isa = PBXBuildFile; fileRef = EC4C430A1A30953D00A82D8D /* Raleway_Regular_Tracked.ttf */; }; + EC4C43121A31A3D000A82D8D /* Habit.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4C43111A31A3D000A82D8D /* Habit.m */; }; + EC55A28F1A2C2D3E00488D4C /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = EC55A28E1A2C2D3E00488D4C /* main.m */; }; + EC55A2921A2C2D3E00488D4C /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = EC55A2911A2C2D3E00488D4C /* AppDelegate.m */; }; + EC55A2951A2C2D3E00488D4C /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC55A2941A2C2D3E00488D4C /* ViewController.m */; }; + EC55A29A1A2C2D3E00488D4C /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC55A2991A2C2D3E00488D4C /* Images.xcassets */; }; + EC55A2A91A2C2D3E00488D4C /* iHabitTests.m in Sources */ = {isa = PBXBuildFile; fileRef = EC55A2A81A2C2D3E00488D4C /* iHabitTests.m */; }; + EC5A19511A3D835C00BA8092 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC5A194D1A3D835C00BA8092 /* LaunchScreen.xib */; }; + EC5A19521A3D835C00BA8092 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = EC5A194F1A3D835C00BA8092 /* Main.storyboard */; }; + EC73E7211A35C7AD00E6823E /* InnerShadowView.m in Sources */ = {isa = PBXBuildFile; fileRef = EC73E7201A35C7AD00E6823E /* InnerShadowView.m */; }; + EC73E7241A35CA0900E6823E /* CellActionView.m in Sources */ = {isa = PBXBuildFile; fileRef = EC73E7231A35CA0900E6823E /* CellActionView.m */; }; + EC73E7271A35D15100E6823E /* HabitBiz.m in Sources */ = {isa = PBXBuildFile; fileRef = EC73E7261A35D15100E6823E /* HabitBiz.m */; }; + EC73E7331A383B7400E6823E /* AddHabitViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = EC73E7311A383B7400E6823E /* AddHabitViewController.m */; }; + EC73E7341A383B7400E6823E /* AddHabitViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = EC73E7321A383B7400E6823E /* AddHabitViewController.xib */; }; + ECF241851A48120300B10EBC /* Util.m in Sources */ = {isa = PBXBuildFile; fileRef = ECF241841A48120300B10EBC /* Util.m */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + EC55A2A31A2C2D3E00488D4C /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EC55A2811A2C2D3E00488D4C /* Project object */; + proxyType = 1; + remoteGlobalIDString = EC55A2881A2C2D3E00488D4C; + remoteInfo = iHabit; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 4999720AA74C0E5AD0D5903C /* libPods-iHabit.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-iHabit.a"; sourceTree = BUILT_PRODUCTS_DIR; }; + 5780C07F6DD8995732F7D1FF /* Pods-iHabitTests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iHabitTests.release.xcconfig"; path = "Pods/Target Support Files/Pods-iHabitTests/Pods-iHabitTests.release.xcconfig"; sourceTree = ""; }; + 60C7E73AA0F2F43CD917A9E6 /* Pods-iHabit.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iHabit.release.xcconfig"; path = "Pods/Target Support Files/Pods-iHabit/Pods-iHabit.release.xcconfig"; sourceTree = ""; }; + 74883FFA65CCAA515622A0F1 /* Pods-iHabit.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iHabit.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iHabit/Pods-iHabit.debug.xcconfig"; sourceTree = ""; }; + CDE29E671A417BFF00DEE2AB /* LineView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LineView.h; sourceTree = ""; }; + CDE29E681A417BFF00DEE2AB /* LineView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = LineView.m; sourceTree = ""; }; + CDE29E6A1A41B24100DEE2AB /* GridPickerViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GridPickerViewController.h; sourceTree = ""; }; + CDE29E6B1A41B24100DEE2AB /* GridPickerViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GridPickerViewController.m; sourceTree = ""; }; + D12863C1136CBB00C1307621 /* Pods-iHabitTests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-iHabitTests.debug.xcconfig"; path = "Pods/Target Support Files/Pods-iHabitTests/Pods-iHabitTests.debug.xcconfig"; sourceTree = ""; }; + EC22BC9D1A43F92C00515CA9 /* TimesPickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimesPickerController.h; sourceTree = ""; }; + EC22BC9E1A43F92C00515CA9 /* TimesPickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TimesPickerController.m; sourceTree = ""; }; + EC22BCA01A43FE6D00515CA9 /* PeriodPickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PeriodPickerController.h; sourceTree = ""; }; + EC22BCA11A43FE6D00515CA9 /* PeriodPickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = PeriodPickerController.m; sourceTree = ""; }; + EC2466E51A412F6A0046CB2C /* HabitMainViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HabitMainViewController.h; sourceTree = ""; }; + EC2466E61A412F6A0046CB2C /* HabitMainViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HabitMainViewController.m; sourceTree = ""; }; + EC402A7A1A456C27008ABFAE /* IconPickerController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IconPickerController.h; sourceTree = ""; }; + EC402A7B1A456C27008ABFAE /* IconPickerController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = IconPickerController.m; sourceTree = ""; }; + EC4C42E51A2EDAEA00A82D8D /* iHabitDB.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = iHabitDB.xcdatamodel; sourceTree = ""; }; + EC4C42E81A2EE35700A82D8D /* HistoryPeriod.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryPeriod.h; sourceTree = ""; }; + EC4C42E91A2EE35700A82D8D /* HistoryPeriod.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryPeriod.m; sourceTree = ""; }; + EC4C42EC1A2EE35800A82D8D /* HistoryAction.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HistoryAction.h; sourceTree = ""; }; + EC4C42ED1A2EE35800A82D8D /* HistoryAction.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HistoryAction.m; sourceTree = ""; }; + EC4C42F41A2EEE6200A82D8D /* HabitTableViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HabitTableViewController.h; sourceTree = ""; }; + EC4C42F51A2EEE6200A82D8D /* HabitTableViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HabitTableViewController.m; sourceTree = ""; }; + EC4C42F71A2EFB3E00A82D8D /* HabitTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HabitTableViewCell.h; sourceTree = ""; }; + EC4C42F81A2EFB3E00A82D8D /* HabitTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HabitTableViewCell.m; sourceTree = ""; }; + EC4C42FA1A2EFE0F00A82D8D /* HabitTableCellViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HabitTableCellViewController.h; sourceTree = ""; }; + EC4C42FB1A2EFE0F00A82D8D /* HabitTableCellViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HabitTableCellViewController.m; sourceTree = ""; }; + EC4C43001A2F254E00A82D8D /* TimeLineView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TimeLineView.h; sourceTree = ""; }; + EC4C43011A2F254E00A82D8D /* TimeLineView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = TimeLineView.m; sourceTree = ""; }; + EC4C43091A30953D00A82D8D /* Raleway_Medium_Tracked.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Raleway_Medium_Tracked.ttf; sourceTree = ""; }; + EC4C430A1A30953D00A82D8D /* Raleway_Regular_Tracked.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Raleway_Regular_Tracked.ttf; sourceTree = ""; }; + EC4C43101A31A3D000A82D8D /* Habit.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Habit.h; sourceTree = ""; }; + EC4C43111A31A3D000A82D8D /* Habit.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Habit.m; sourceTree = ""; }; + EC55A2891A2C2D3E00488D4C /* iHabit.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = iHabit.app; sourceTree = BUILT_PRODUCTS_DIR; }; + EC55A28D1A2C2D3E00488D4C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EC55A28E1A2C2D3E00488D4C /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; + EC55A2901A2C2D3E00488D4C /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; + EC55A2911A2C2D3E00488D4C /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; + EC55A2931A2C2D3E00488D4C /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; + EC55A2941A2C2D3E00488D4C /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; + EC55A2991A2C2D3E00488D4C /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; + EC55A2A21A2C2D3E00488D4C /* iHabitTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = iHabitTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + EC55A2A71A2C2D3E00488D4C /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EC55A2A81A2C2D3E00488D4C /* iHabitTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = iHabitTests.m; sourceTree = ""; }; + EC5A194E1A3D835C00BA8092 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = LaunchScreen.xib; sourceTree = ""; }; + EC5A19501A3D835C00BA8092 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Main.storyboard; sourceTree = ""; }; + EC73E71F1A35C7AD00E6823E /* InnerShadowView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InnerShadowView.h; sourceTree = ""; }; + EC73E7201A35C7AD00E6823E /* InnerShadowView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = InnerShadowView.m; sourceTree = ""; }; + EC73E7221A35CA0900E6823E /* CellActionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CellActionView.h; sourceTree = ""; }; + EC73E7231A35CA0900E6823E /* CellActionView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CellActionView.m; sourceTree = ""; }; + EC73E7251A35D15100E6823E /* HabitBiz.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HabitBiz.h; sourceTree = ""; }; + EC73E7261A35D15100E6823E /* HabitBiz.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HabitBiz.m; sourceTree = ""; }; + EC73E7301A383B7400E6823E /* AddHabitViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AddHabitViewController.h; sourceTree = ""; }; + EC73E7311A383B7400E6823E /* AddHabitViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AddHabitViewController.m; sourceTree = ""; }; + EC73E7321A383B7400E6823E /* AddHabitViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = AddHabitViewController.xib; sourceTree = ""; }; + ECF241831A48120300B10EBC /* Util.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Util.h; sourceTree = ""; }; + ECF241841A48120300B10EBC /* Util.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Util.m; sourceTree = ""; }; + FE5D40FCFC579DA59F6D2237 /* libPods-iHabitTests.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = "libPods-iHabitTests.a"; sourceTree = BUILT_PRODUCTS_DIR; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + EC55A2861A2C2D3E00488D4C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 4BBC0F4413DC9B9C8D5D144C /* libPods-iHabit.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC55A29F1A2C2D3E00488D4C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 96A42CF94F461F5F5B9D86EC /* libPods-iHabitTests.a in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 459DD1A24354887D9EE47FAB /* Pods */ = { + isa = PBXGroup; + children = ( + 74883FFA65CCAA515622A0F1 /* Pods-iHabit.debug.xcconfig */, + 60C7E73AA0F2F43CD917A9E6 /* Pods-iHabit.release.xcconfig */, + D12863C1136CBB00C1307621 /* Pods-iHabitTests.debug.xcconfig */, + 5780C07F6DD8995732F7D1FF /* Pods-iHabitTests.release.xcconfig */, + ); + name = Pods; + sourceTree = ""; + }; + EC55A2801A2C2D3E00488D4C = { + isa = PBXGroup; + children = ( + EC55A28B1A2C2D3E00488D4C /* iHabit */, + EC55A2A51A2C2D3E00488D4C /* iHabitTests */, + EC55A28A1A2C2D3E00488D4C /* Products */, + 459DD1A24354887D9EE47FAB /* Pods */, + EF4B7C91BCFB7136CCB08CE8 /* Frameworks */, + ); + sourceTree = ""; + }; + EC55A28A1A2C2D3E00488D4C /* Products */ = { + isa = PBXGroup; + children = ( + EC55A2891A2C2D3E00488D4C /* iHabit.app */, + EC55A2A21A2C2D3E00488D4C /* iHabitTests.xctest */, + ); + name = Products; + sourceTree = ""; + }; + EC55A28B1A2C2D3E00488D4C /* iHabit */ = { + isa = PBXGroup; + children = ( + EC5A194C1A3D835C00BA8092 /* Base.lproj */, + EC73E72C1A38384D00E6823E /* CoreBiz */, + EC73E72B1A38383000E6823E /* Controller */, + EC73E72A1A38381500E6823E /* View */, + EC73E7291A3837E700E6823E /* Resource */, + EC73E7281A3837D300E6823E /* Data */, + EC55A2901A2C2D3E00488D4C /* AppDelegate.h */, + EC55A2911A2C2D3E00488D4C /* AppDelegate.m */, + EC55A2931A2C2D3E00488D4C /* ViewController.h */, + EC55A2941A2C2D3E00488D4C /* ViewController.m */, + EC55A28C1A2C2D3E00488D4C /* Supporting Files */, + ECF241831A48120300B10EBC /* Util.h */, + ECF241841A48120300B10EBC /* Util.m */, + ); + path = iHabit; + sourceTree = ""; + }; + EC55A28C1A2C2D3E00488D4C /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EC55A28D1A2C2D3E00488D4C /* Info.plist */, + EC55A28E1A2C2D3E00488D4C /* main.m */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + EC55A2A51A2C2D3E00488D4C /* iHabitTests */ = { + isa = PBXGroup; + children = ( + EC55A2A81A2C2D3E00488D4C /* iHabitTests.m */, + EC55A2A61A2C2D3E00488D4C /* Supporting Files */, + ); + path = iHabitTests; + sourceTree = ""; + }; + EC55A2A61A2C2D3E00488D4C /* Supporting Files */ = { + isa = PBXGroup; + children = ( + EC55A2A71A2C2D3E00488D4C /* Info.plist */, + ); + name = "Supporting Files"; + sourceTree = ""; + }; + EC5A194C1A3D835C00BA8092 /* Base.lproj */ = { + isa = PBXGroup; + children = ( + EC5A194D1A3D835C00BA8092 /* LaunchScreen.xib */, + EC5A194F1A3D835C00BA8092 /* Main.storyboard */, + ); + path = Base.lproj; + sourceTree = ""; + }; + EC73E7281A3837D300E6823E /* Data */ = { + isa = PBXGroup; + children = ( + EC4C42E41A2EDAEA00A82D8D /* iHabitDB.xcdatamodeld */, + EC4C43101A31A3D000A82D8D /* Habit.h */, + EC4C43111A31A3D000A82D8D /* Habit.m */, + EC4C42EC1A2EE35800A82D8D /* HistoryAction.h */, + EC4C42ED1A2EE35800A82D8D /* HistoryAction.m */, + EC4C42E81A2EE35700A82D8D /* HistoryPeriod.h */, + EC4C42E91A2EE35700A82D8D /* HistoryPeriod.m */, + ); + name = Data; + sourceTree = ""; + }; + EC73E7291A3837E700E6823E /* Resource */ = { + isa = PBXGroup; + children = ( + EC55A2991A2C2D3E00488D4C /* Images.xcassets */, + EC4C43091A30953D00A82D8D /* Raleway_Medium_Tracked.ttf */, + EC4C430A1A30953D00A82D8D /* Raleway_Regular_Tracked.ttf */, + ); + name = Resource; + sourceTree = ""; + }; + EC73E72A1A38381500E6823E /* View */ = { + isa = PBXGroup; + children = ( + EC4C42F71A2EFB3E00A82D8D /* HabitTableViewCell.h */, + EC4C42F81A2EFB3E00A82D8D /* HabitTableViewCell.m */, + EC4C43001A2F254E00A82D8D /* TimeLineView.h */, + EC4C43011A2F254E00A82D8D /* TimeLineView.m */, + EC73E71F1A35C7AD00E6823E /* InnerShadowView.h */, + EC73E7201A35C7AD00E6823E /* InnerShadowView.m */, + EC73E7221A35CA0900E6823E /* CellActionView.h */, + EC73E7231A35CA0900E6823E /* CellActionView.m */, + CDE29E671A417BFF00DEE2AB /* LineView.h */, + CDE29E681A417BFF00DEE2AB /* LineView.m */, + ); + name = View; + sourceTree = ""; + }; + EC73E72B1A38383000E6823E /* Controller */ = { + isa = PBXGroup; + children = ( + EC4C42F41A2EEE6200A82D8D /* HabitTableViewController.h */, + EC4C42F51A2EEE6200A82D8D /* HabitTableViewController.m */, + EC4C42FA1A2EFE0F00A82D8D /* HabitTableCellViewController.h */, + EC4C42FB1A2EFE0F00A82D8D /* HabitTableCellViewController.m */, + EC73E7301A383B7400E6823E /* AddHabitViewController.h */, + EC73E7311A383B7400E6823E /* AddHabitViewController.m */, + EC73E7321A383B7400E6823E /* AddHabitViewController.xib */, + EC2466E51A412F6A0046CB2C /* HabitMainViewController.h */, + EC2466E61A412F6A0046CB2C /* HabitMainViewController.m */, + CDE29E6A1A41B24100DEE2AB /* GridPickerViewController.h */, + CDE29E6B1A41B24100DEE2AB /* GridPickerViewController.m */, + EC22BC9D1A43F92C00515CA9 /* TimesPickerController.h */, + EC22BC9E1A43F92C00515CA9 /* TimesPickerController.m */, + EC22BCA01A43FE6D00515CA9 /* PeriodPickerController.h */, + EC22BCA11A43FE6D00515CA9 /* PeriodPickerController.m */, + EC402A7A1A456C27008ABFAE /* IconPickerController.h */, + EC402A7B1A456C27008ABFAE /* IconPickerController.m */, + ); + name = Controller; + sourceTree = ""; + }; + EC73E72C1A38384D00E6823E /* CoreBiz */ = { + isa = PBXGroup; + children = ( + EC73E7251A35D15100E6823E /* HabitBiz.h */, + EC73E7261A35D15100E6823E /* HabitBiz.m */, + ); + name = CoreBiz; + sourceTree = ""; + }; + EF4B7C91BCFB7136CCB08CE8 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 4999720AA74C0E5AD0D5903C /* libPods-iHabit.a */, + FE5D40FCFC579DA59F6D2237 /* libPods-iHabitTests.a */, + ); + name = Frameworks; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXNativeTarget section */ + EC55A2881A2C2D3E00488D4C /* iHabit */ = { + isa = PBXNativeTarget; + buildConfigurationList = EC55A2AC1A2C2D3E00488D4C /* Build configuration list for PBXNativeTarget "iHabit" */; + buildPhases = ( + 5D8688A2CF83CF37104E9575 /* Check Pods Manifest.lock */, + EC55A2851A2C2D3E00488D4C /* Sources */, + EC55A2861A2C2D3E00488D4C /* Frameworks */, + EC55A2871A2C2D3E00488D4C /* Resources */, + 12706CB5999595FF76321234 /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = iHabit; + productName = iHabit; + productReference = EC55A2891A2C2D3E00488D4C /* iHabit.app */; + productType = "com.apple.product-type.application"; + }; + EC55A2A11A2C2D3E00488D4C /* iHabitTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = EC55A2AF1A2C2D3E00488D4C /* Build configuration list for PBXNativeTarget "iHabitTests" */; + buildPhases = ( + 63ED9AE7BF250DF690224151 /* Check Pods Manifest.lock */, + EC55A29E1A2C2D3E00488D4C /* Sources */, + EC55A29F1A2C2D3E00488D4C /* Frameworks */, + EC55A2A01A2C2D3E00488D4C /* Resources */, + D19B6EFFC9FECB9B00BE0BD4 /* Copy Pods Resources */, + ); + buildRules = ( + ); + dependencies = ( + EC55A2A41A2C2D3E00488D4C /* PBXTargetDependency */, + ); + name = iHabitTests; + productName = iHabitTests; + productReference = EC55A2A21A2C2D3E00488D4C /* iHabitTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + EC55A2811A2C2D3E00488D4C /* Project object */ = { + isa = PBXProject; + attributes = { + LastUpgradeCheck = 0610; + ORGANIZATIONNAME = lzh; + TargetAttributes = { + EC55A2881A2C2D3E00488D4C = { + CreatedOnToolsVersion = 6.1; + }; + EC55A2A11A2C2D3E00488D4C = { + CreatedOnToolsVersion = 6.1; + TestTargetID = EC55A2881A2C2D3E00488D4C; + }; + }; + }; + buildConfigurationList = EC55A2841A2C2D3E00488D4C /* Build configuration list for PBXProject "iHabit" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + Base, + ); + mainGroup = EC55A2801A2C2D3E00488D4C; + productRefGroup = EC55A28A1A2C2D3E00488D4C /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + EC55A2881A2C2D3E00488D4C /* iHabit */, + EC55A2A11A2C2D3E00488D4C /* iHabitTests */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + EC55A2871A2C2D3E00488D4C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC5A19511A3D835C00BA8092 /* LaunchScreen.xib in Resources */, + EC4C430B1A30953D00A82D8D /* Raleway_Medium_Tracked.ttf in Resources */, + EC4C430C1A30953D00A82D8D /* Raleway_Regular_Tracked.ttf in Resources */, + EC5A19521A3D835C00BA8092 /* Main.storyboard in Resources */, + EC55A29A1A2C2D3E00488D4C /* Images.xcassets in Resources */, + EC73E7341A383B7400E6823E /* AddHabitViewController.xib in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC55A2A01A2C2D3E00488D4C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXShellScriptBuildPhase section */ + 12706CB5999595FF76321234 /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-iHabit/Pods-iHabit-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; + 5D8688A2CF83CF37104E9575 /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + 63ED9AE7BF250DF690224151 /* Check Pods Manifest.lock */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Check Pods Manifest.lock"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "diff \"${PODS_ROOT}/../Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [[ $? != 0 ]] ; then\n cat << EOM\nerror: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\nEOM\n exit 1\nfi\n"; + showEnvVarsInLog = 0; + }; + D19B6EFFC9FECB9B00BE0BD4 /* Copy Pods Resources */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + ); + name = "Copy Pods Resources"; + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "\"${SRCROOT}/Pods/Target Support Files/Pods-iHabitTests/Pods-iHabitTests-resources.sh\"\n"; + showEnvVarsInLog = 0; + }; +/* End PBXShellScriptBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + EC55A2851A2C2D3E00488D4C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC4C42E61A2EDAEA00A82D8D /* iHabitDB.xcdatamodeld in Sources */, + EC55A2951A2C2D3E00488D4C /* ViewController.m in Sources */, + EC73E7271A35D15100E6823E /* HabitBiz.m in Sources */, + EC73E7331A383B7400E6823E /* AddHabitViewController.m in Sources */, + EC4C43121A31A3D000A82D8D /* Habit.m in Sources */, + EC402A7C1A456C27008ABFAE /* IconPickerController.m in Sources */, + EC22BC9F1A43F92C00515CA9 /* TimesPickerController.m in Sources */, + EC2466E71A412F6A0046CB2C /* HabitMainViewController.m in Sources */, + EC4C42FC1A2EFE0F00A82D8D /* HabitTableCellViewController.m in Sources */, + EC4C42EA1A2EE35700A82D8D /* HistoryPeriod.m in Sources */, + EC55A2921A2C2D3E00488D4C /* AppDelegate.m in Sources */, + EC4C42F61A2EEE6200A82D8D /* HabitTableViewController.m in Sources */, + EC4C42EE1A2EE35800A82D8D /* HistoryAction.m in Sources */, + CDE29E691A417BFF00DEE2AB /* LineView.m in Sources */, + EC55A28F1A2C2D3E00488D4C /* main.m in Sources */, + EC73E7211A35C7AD00E6823E /* InnerShadowView.m in Sources */, + EC4C42F91A2EFB3E00A82D8D /* HabitTableViewCell.m in Sources */, + EC22BCA21A43FE6D00515CA9 /* PeriodPickerController.m in Sources */, + CDE29E6C1A41B24100DEE2AB /* GridPickerViewController.m in Sources */, + ECF241851A48120300B10EBC /* Util.m in Sources */, + EC73E7241A35CA0900E6823E /* CellActionView.m in Sources */, + EC4C43021A2F254E00A82D8D /* TimeLineView.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC55A29E1A2C2D3E00488D4C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC4C42E71A2EDAEA00A82D8D /* iHabitDB.xcdatamodeld in Sources */, + EC55A2A91A2C2D3E00488D4C /* iHabitTests.m in Sources */, + EC4C42EF1A2EE35800A82D8D /* HistoryAction.m in Sources */, + EC4C42EB1A2EE35700A82D8D /* HistoryPeriod.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + EC55A2A41A2C2D3E00488D4C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EC55A2881A2C2D3E00488D4C /* iHabit */; + targetProxy = EC55A2A31A2C2D3E00488D4C /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin PBXVariantGroup section */ + EC5A194D1A3D835C00BA8092 /* LaunchScreen.xib */ = { + isa = PBXVariantGroup; + children = ( + EC5A194E1A3D835C00BA8092 /* Base */, + ); + name = LaunchScreen.xib; + sourceTree = ""; + }; + EC5A194F1A3D835C00BA8092 /* Main.storyboard */ = { + isa = PBXVariantGroup; + children = ( + EC5A19501A3D835C00BA8092 /* Base */, + ); + name = Main.storyboard; + sourceTree = ""; + }; +/* End PBXVariantGroup section */ + +/* Begin XCBuildConfiguration section */ + EC55A2AA1A2C2D3E00488D4C /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_SYMBOLS_PRIVATE_EXTERN = NO; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + EC55A2AB1A2C2D3E00488D4C /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = YES; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.1; + MTL_ENABLE_DEBUG_INFO = NO; + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + }; + name = Release; + }; + EC55A2AD1A2C2D3E00488D4C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 74883FFA65CCAA515622A0F1 /* Pods-iHabit.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = iHabit/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Debug; + }; + EC55A2AE1A2C2D3E00488D4C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 60C7E73AA0F2F43CD917A9E6 /* Pods-iHabit.release.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + INFOPLIST_FILE = iHabit/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + }; + name = Release; + }; + EC55A2B01A2C2D3E00488D4C /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D12863C1136CBB00C1307621 /* Pods-iHabitTests.debug.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + INFOPLIST_FILE = iHabitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iHabit.app/iHabit"; + }; + name = Debug; + }; + EC55A2B11A2C2D3E00488D4C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5780C07F6DD8995732F7D1FF /* Pods-iHabitTests.release.xcconfig */; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + FRAMEWORK_SEARCH_PATHS = ( + "$(SDKROOT)/Developer/Library/Frameworks", + "$(inherited)", + ); + INFOPLIST_FILE = iHabitTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_NAME = "$(TARGET_NAME)"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/iHabit.app/iHabit"; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + EC55A2841A2C2D3E00488D4C /* Build configuration list for PBXProject "iHabit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC55A2AA1A2C2D3E00488D4C /* Debug */, + EC55A2AB1A2C2D3E00488D4C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EC55A2AC1A2C2D3E00488D4C /* Build configuration list for PBXNativeTarget "iHabit" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC55A2AD1A2C2D3E00488D4C /* Debug */, + EC55A2AE1A2C2D3E00488D4C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EC55A2AF1A2C2D3E00488D4C /* Build configuration list for PBXNativeTarget "iHabitTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EC55A2B01A2C2D3E00488D4C /* Debug */, + EC55A2B11A2C2D3E00488D4C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + +/* Begin XCVersionGroup section */ + EC4C42E41A2EDAEA00A82D8D /* iHabitDB.xcdatamodeld */ = { + isa = XCVersionGroup; + children = ( + EC4C42E51A2EDAEA00A82D8D /* iHabitDB.xcdatamodel */, + ); + currentVersion = EC4C42E51A2EDAEA00A82D8D /* iHabitDB.xcdatamodel */; + path = iHabitDB.xcdatamodeld; + sourceTree = ""; + versionGroupType = wrapper.xcdatamodel; + }; +/* End XCVersionGroup section */ + }; + rootObject = EC55A2811A2C2D3E00488D4C /* Project object */; +} diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit.xcodeproj/project.xcworkspace/contents.xcworkspacedata" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit.xcodeproj/project.xcworkspace/contents.xcworkspacedata" new file mode 100644 index 00000000..43a82e5f --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit.xcodeproj/project.xcworkspace/contents.xcworkspacedata" @@ -0,0 +1,7 @@ + + + + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit.xcworkspace/contents.xcworkspacedata" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit.xcworkspace/contents.xcworkspacedata" new file mode 100644 index 00000000..d9bb332f --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit.xcworkspace/contents.xcworkspacedata" @@ -0,0 +1,10 @@ + + + + + + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AddHabitViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AddHabitViewController.h" new file mode 100644 index 00000000..48a6cb79 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AddHabitViewController.h" @@ -0,0 +1,26 @@ +// +// AddHabitViewController.h +// iHabit +// +// Created by 陆钟豪 on 14/12/10. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface AddHabitViewController : UIViewController + +- (IBAction)addHabit:(id)sender; +@property (weak, nonatomic) IBOutlet UITextField *habitTextField; +@property (weak, nonatomic) IBOutlet UIView *timesPicker; +@property (weak, nonatomic) IBOutlet UIView *periodPicker; +@property (weak, nonatomic) IBOutlet UIScrollView *scrollView; +@property (weak, nonatomic) UIButton *backButton; +@property (weak, nonatomic) IBOutlet UIView *iconPicker; + +@end + + +@interface PeriodTimesPickerViewController : UIViewController + +@end \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AddHabitViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AddHabitViewController.m" new file mode 100644 index 00000000..ae5ff2d2 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AddHabitViewController.m" @@ -0,0 +1,130 @@ +// +// AddHabitViewController.m +// iHabit +// +// Created by 陆钟豪 on 14/12/10. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "AddHabitViewController.h" +#import "HabitBiz.h" +#import "LineView.h" +#import "TimesPickerController.h" +#import "PeriodPickerController.h" +#import "IconPickerController.h" + +@interface AddHabitViewController () + +@end + +@implementation AddHabitViewController { + HabitBiz* _habitBiz; + TimesPickerController *_timesPickerController; + PeriodPickerController *_periodPickerController; + IconPickerController *_iconPickerController; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + + //这个标准默认为YES,如果设置为NO,这消息一旦传递给subView,这scroll事件不会再发生。 + self.scrollView.canCancelContentTouches = NO; + + UIView *navigationBarView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 80)]; + navigationBarView.backgroundColor = UIColor.whiteColor; + + // 添加nav阴影 + navigationBarView.layer.shadowColor = [UIColor blackColor].CGColor; + navigationBarView.layer.shadowOffset = CGSizeMake(0, 0); + navigationBarView.layer.shadowOpacity = 0.5; + navigationBarView.layer.shadowRadius = 5; + + UILabel *titleLable = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, 300, 60)]; + titleLable.font = [UIFont fontWithName:@"Raleway-MediumTracked" size:40]; + titleLable.text = @"New Habit"; + + UIButton *backButton = [UIButton buttonWithType:UIButtonTypeRoundedRect]; + [backButton addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside]; // 绑定事件 + backButton.frame = CGRectMake(240, 40, 60, 30); + backButton.titleLabel.textAlignment = NSTextAlignmentCenter; + backButton.titleLabel.font = [UIFont fontWithName:@"Raleway-Tracked" size:16]; + backButton.tintColor = UIColor.blackColor; + [backButton setTitle:@"Back" forState:UIControlStateNormal]; + UIView *underLineView = [[LineView alloc] initWithFrame:CGRectMake(5, 25, 50, 2)]; + [backButton addSubview:underLineView]; + + // 绘制按钮背景 + UIImage *selectedBackgroundImage; + UIGraphicsBeginImageContext(backButton.frame.size); + CGContextRef contextRef = UIGraphicsGetCurrentContext(); + CGContextSetFillColorWithColor(contextRef, UIColor.grayColor.CGColor); + CGContextFillRect(contextRef, CGRectMake(0, 0, backButton.frame.size.width, backButton.frame.size.height)); + selectedBackgroundImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + backButton.layer.masksToBounds = YES; + [backButton.layer setCornerRadius:10.0]; + [backButton setBackgroundImage:selectedBackgroundImage forState:UIControlStateHighlighted]; + + _habitBiz = [HabitBiz getInstance]; + + _timesPickerController = [[TimesPickerController alloc] init]; + _timesPickerController.view = self.timesPicker; + [_timesPickerController viewDidLoad]; + + _periodPickerController = [[PeriodPickerController alloc] init]; + _periodPickerController.view = self.periodPicker; + [_periodPickerController viewDidLoad]; + + _iconPickerController = [[IconPickerController alloc] init]; + _iconPickerController.view = self.iconPicker; + [_iconPickerController viewDidLoad]; + + [self addChildViewController:_timesPickerController]; + [self addChildViewController:_periodPickerController]; + + [navigationBarView addSubview:titleLable]; + [navigationBarView addSubview:backButton]; + [self.view addSubview:navigationBarView]; + + _backButton = backButton; +} + +-(IBAction) habitTextFieldValueChanged:(id)sender { + UITextField *habitTextField = (UITextField *)sender; + if([@"" isEqualToString:habitTextField.text]){ + [_backButton setTitle:@"Back" forState:UIControlStateNormal]; + [_backButton addTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton removeTarget:self action:@selector(addHabit:) forControlEvents:UIControlEventTouchUpInside]; + } + else { + [_backButton setTitle:@"Add" forState:UIControlStateNormal]; + [_backButton removeTarget:self action:@selector(back:) forControlEvents:UIControlEventTouchUpInside]; + [_backButton addTarget:self action:@selector(addHabit:) forControlEvents:UIControlEventTouchUpInside]; + } +} + + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +- (IBAction)addHabit:(id)sender { + [_habitBiz saveHabitWithTitle: self.habitTextField.text + iconName: [_iconPickerController selectedIconName] period:[_periodPickerController selectedPeriod] + times: [NSNumber numberWithInteger:[_timesPickerController selectedTimes]]]; + [self back:sender]; +} + +-(IBAction)back:(id)sender { + CATransition *animation = [CATransition animation]; + animation.delegate = self; + animation.duration = 0.7; + animation.timingFunction = UIViewAnimationCurveEaseInOut; + animation.type = @"cube"; + animation.subtype = kCATransitionFromTop; + [[self.navigationController.view layer] addAnimation:animation forKey:@"animation"]; + [self.navigationController popViewControllerAnimated:NO]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AddHabitViewController.xib" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AddHabitViewController.xib" new file mode 100644 index 00000000..e533cfdb --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AddHabitViewController.xib" @@ -0,0 +1,136 @@ + + + + + + + + Raleway-MediumTracked + + + Raleway-Tracked + Raleway-Tracked + Raleway-Tracked + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AppDelegate.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AppDelegate.h" new file mode 100644 index 00000000..b05ab98f --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AppDelegate.h" @@ -0,0 +1,17 @@ +// +// AppDelegate.h +// iHabit +// +// Created by 陆钟豪 on 14/12/1. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface AppDelegate : UIResponder + +@property (strong, nonatomic) UIWindow *window; + + +@end + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AppDelegate.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AppDelegate.m" new file mode 100644 index 00000000..c56b9966 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/AppDelegate.m" @@ -0,0 +1,62 @@ +// +// AppDelegate.m +// iHabit +// +// Created by 陆钟豪 on 14/12/1. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "AppDelegate.h" +#import +#import "HabitTableViewController.h" +#import "AddHabitViewController.h" +#import "HabitMainViewController.h" + + +@interface AppDelegate () + +@end + +@implementation AppDelegate + + +- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { + // Override point for customization after application launch. + [MagicalRecord setupCoreDataStackWithStoreNamed: @"iHabitDB.sqlite"]; + + _window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]]; + _window.backgroundColor = UIColor.whiteColor; + + UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:[[HabitMainViewController alloc] init]]; + _window.rootViewController = navigationController; + navigationController.navigationBar.hidden = YES; + + [_window makeKeyAndVisible]; + + return YES; +} + +- (void)applicationWillResignActive:(UIApplication *)application { + // Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state. + // Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game. +} + +- (void)applicationDidEnterBackground:(UIApplication *)application { + // Use this method to release shared resources, save user data, invalidate timers, and store enough application state information to restore your application to its current state in case it is terminated later. + // If your application supports background execution, this method is called instead of applicationWillTerminate: when the user quits. +} + +- (void)applicationWillEnterForeground:(UIApplication *)application { + // Called as part of the transition from the background to the inactive state; here you can undo many of the changes made on entering the background. +} + +- (void)applicationDidBecomeActive:(UIApplication *)application { + // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. +} + +- (void)applicationWillTerminate:(UIApplication *)application { + // Called when the application is about to terminate. Save data if appropriate. See also applicationDidEnterBackground:. + [MagicalRecord cleanUp]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Base.lproj/LaunchScreen.xib" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Base.lproj/LaunchScreen.xib" new file mode 100644 index 00000000..d57f1966 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Base.lproj/LaunchScreen.xib" @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Base.lproj/Main.storyboard" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Base.lproj/Main.storyboard" new file mode 100644 index 00000000..bebd9f51 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Base.lproj/Main.storyboard" @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + + + + + + + + + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/CellActionView.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/CellActionView.h" new file mode 100644 index 00000000..184ffa47 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/CellActionView.h" @@ -0,0 +1,14 @@ +// +// CellActionView.h +// iHabit +// +// Created by 陆钟豪 on 14/12/8. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "InnerShadowView.h" + +@interface CellActionView : InnerShadowView + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/CellActionView.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/CellActionView.m" new file mode 100644 index 00000000..8f6cd5e2 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/CellActionView.m" @@ -0,0 +1,20 @@ +// +// CellActionView.m +// iHabit +// +// Created by 陆钟豪 on 14/12/8. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "CellActionView.h" + +@implementation CellActionView + + +- (void)drawRect:(CGRect)rect { + CGContextRef context = UIGraphicsGetCurrentContext(); + CGPathRef path = [UIBezierPath bezierPathWithRect:self.bounds].CGPath; + [self drawInnerShadowInContext:context withPath:path shadowColor:UIColor.blackColor.CGColor offset:CGSizeMake(0, 0) blurRadius:5.0f]; +} + +@end \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/GridPickerViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/GridPickerViewController.h" new file mode 100644 index 00000000..c5e78d0e --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/GridPickerViewController.h" @@ -0,0 +1,24 @@ +// +// GridPicker.h +// iHabit +// +// Created by xsdlr on 14/12/17. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface GridPickerViewController : UIViewController + +@property NSInteger numberOfCellInRow; +@property CGFloat horizontalSpace; +@property CGFloat verticalSpace; +@property (readonly) UIView *selectedCellView; +@property (readonly) NSInteger selectedCellViewIndex; + +-(void)addCellView:(UIView *)view; +-(void)layoutCellViews; +-(void)selectCellView:(UIView*) cellView; +-(void)selectCellViewWithIndex:(NSInteger)index; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/GridPickerViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/GridPickerViewController.m" new file mode 100644 index 00000000..72116fa6 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/GridPickerViewController.m" @@ -0,0 +1,80 @@ +// +// GridPicker.m +// iHabit +// +// Created by xsdlr on 14/12/17. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "GridPickerViewController.h" +#import + +@implementation GridPickerViewController +{ + NSMutableArray* _cellViews; + UIView *_selectedView; + UIView *_selectedCellView; +} + +-(void)viewDidLoad { + _selectedView = [[UIView alloc] init]; + _selectedView.backgroundColor = UIColor.grayColor; + [_selectedView.layer setCornerRadius:8]; + [self.view addSubview:_selectedView]; +} + +-(void)addCellView:(UIView *)view { + if(_cellViews == nil){ + _cellViews = [[NSMutableArray alloc] init]; + } + [_cellViews addObject:view]; + [self.view addSubview:view]; +} + +-(void)layoutCellViews{ + NSInteger i = 0; + UIView* preView = nil; + UIView* preRowFirstView = nil; + for(UIView* view in _cellViews) { + NSInteger numInRow = i % self.numberOfCellInRow; + NSInteger row = i / self.numberOfCellInRow; + if(row >= 1 && numInRow == 0) + preRowFirstView = preView; + CGFloat preCellRightX = numInRow == 0 ? 0 : preView.frame.origin.x + preView.frame.size.width; + CGFloat preRowBottomY = row == 0 ? 0 : preRowFirstView.frame.origin.y + preRowFirstView.frame.size.height; + CGRect frame = view.frame; + frame.origin.x = preCellRightX + self.horizontalSpace; + frame.origin.y = preRowBottomY + self.verticalSpace; + view.frame = frame; + preView = view; + ++i; + } +} + +-(void)selectCellView:(UIView*) cellView{ + UIView *selectedView = objc_getAssociatedObject(self, "selectedViewFrame"); + [UIView animateWithDuration:0.2f animations:^{ + if(selectedView == nil){ + _selectedView.frame = cellView.frame; + } + else { + _selectedView.frame = [cellView convertRect:selectedView.frame toView:self.view]; + NSLog(@"_selectedView.frame %f,%f,%f,%f", _selectedView.frame.origin.x, _selectedView.frame.origin.y, _selectedView.frame.size.width, _selectedView.frame.size.height); + } + }]; + _selectedCellView = cellView; +} + +-(void)selectCellViewWithIndex:(NSInteger)index { + [self selectCellView:[_cellViews objectAtIndex:index]]; +} + +-(UIView *)selectedCellView { + return _selectedCellView; +} + +-(NSInteger)selectedCellViewIndex { + return [_cellViews indexOfObject:_selectedCellView]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Habit.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Habit.h" new file mode 100644 index 00000000..1897ea2c --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Habit.h" @@ -0,0 +1,47 @@ +// +// Habit.h +// iHabit +// +// Created by 陆钟豪 on 14/12/5. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import +#import + + +typedef NS_ENUM(NSInteger, HabitPeriod) { // 习惯周期 + HabitPeriodDay = 0, + HabitPeriodWeek, + HabitPeriodMonth, + HabitPeriodYear +}; + + +@interface Habit : NSManagedObject + +// 标题 +@property (nonatomic, retain) NSString * title; +// 图标Key +@property (nonatomic, retain) NSString * iconName; +// 周期 +@property (nonatomic, retain) NSNumber * period; +// 次数 +@property (nonatomic, retain) NSNumber * times; + +@property (nonatomic, retain) NSDate * createTime; +@property (nonatomic, retain) NSDate * nextDoTime; +@property (nonatomic, retain) NSDate * nextPeriodBeginTime; +@property (nonatomic, retain) NSDate * doTime; +@property (nonatomic, retain) NSDate * skipTime; + +// 本周期剩余次数 +@property (nonatomic, retain) NSNumber * surplusTimes; + +-(NSDate *)lastActionTime; +-(UIColor*)color; + ++(NSDictionary*) iconColorDict; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Habit.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Habit.m" new file mode 100644 index 00000000..ad0d9a0a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Habit.m" @@ -0,0 +1,63 @@ +// +// Habit.m +// iHabit +// +// Created by 陆钟豪 on 14/12/5. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "Habit.h" + +@implementation Habit + +@dynamic title; +@dynamic iconName; +@dynamic period; +@dynamic times; +@dynamic createTime; +@dynamic doTime; +@dynamic skipTime; +@dynamic nextDoTime; +@dynamic nextPeriodBeginTime; +@dynamic surplusTimes; + +-(NSDate *)lastActionTime { + return [NSDate dateWithTimeIntervalSince1970:fmax(fmax([self.createTime timeIntervalSince1970], + self.doTime == nil ? 0 :[self.doTime timeIntervalSince1970]), + self.skipTime == nil ? 0 :[self.skipTime timeIntervalSince1970])]; +} + +-(UIColor*)color { + return Habit.iconColorDict[self.iconName]; +} + ++(NSDictionary*) iconColorDict { + static NSDictionary* iconColorDict = nil; + if(iconColorDict == nil) { + iconColorDict = @{ + @"airplane" : UIColor.blueColor, + @"alarm" : UIColor.blueColor, + @"apple" : UIColor.redColor, + @"archive" : UIColor.redColor, + @"star" : UIColor.yellowColor + + }; + } + return iconColorDict; +} + +-(NSString *)description { + return [NSString stringWithFormat:@"title:%@,iconName:%@,period:%@,times:%@,createTime:%@,doTime:%@,skipTime:%@,nextDoTime:%@,nextPeriodBeginTime:%@,surplusTimes:%@", + self.title, + self.iconName, + self.period, + self.times, + self.createTime, + self.doTime, + self.skipTime, + self.nextDoTime, + self.nextPeriodBeginTime, + self.surplusTimes]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitBiz.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitBiz.h" new file mode 100644 index 00000000..245d08e2 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitBiz.h" @@ -0,0 +1,21 @@ +// +// HabitBiz.h +// iHabit +// +// Created by 陆钟豪 on 14/12/8. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "Habit.h" + +@interface HabitBiz : NSObject +@property (strong, nonatomic, readonly) NSArray* habitArray; + +-(NSInteger)done:(Habit*)habit; +-(NSInteger)skip:(Habit*)habit; +-(Habit*)saveHabitWithTitle:(NSString*)title iconName:(NSString*)iconName period:(HabitPeriod)period times:(NSNumber*)times; + ++(HabitBiz*)getInstance; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitBiz.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitBiz.m" new file mode 100644 index 00000000..ea03af12 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitBiz.m" @@ -0,0 +1,168 @@ +// +// HabitBiz.m +// iHabit +// +// Created by 陆钟豪 on 14/12/8. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "HabitBiz.h" +#import "Habit.h" +#import "math.h" +#import + +@implementation HabitBiz + +-(instancetype)init { + self = [super init]; + _habitArray = [Habit MR_findAll]; + _habitArray = [HabitBiz sortHabit:_habitArray]; // 排序 + return self; +} + +-(Habit*)saveHabitWithTitle:(NSString*)title iconName:(NSString*)iconName period:(HabitPeriod)period times:(NSNumber*)times { + NSDate *nowDate = [NSDate date]; + NSCalendar *cal = [NSCalendar currentCalendar]; //日历 + + Habit *newHabit = [Habit MR_createEntity]; + newHabit.title = title; + newHabit.period = [NSNumber numberWithInteger:period]; + newHabit.times = times; + newHabit.iconName = iconName; + newHabit.createTime = nowDate; + + // 计算periodEndTime + newHabit.nextPeriodBeginTime = [HabitBiz calculateNextPeriodBeginTimeWithTime:nowDate period:period]; + + newHabit.surplusTimes = times; + + // 计算nextDoTime FIXME 重复代码 + if(period == HabitPeriodDay) { + NSTimeInterval interval = (NSTimeInterval)(24 * 60 * 60) / [newHabit.times integerValue]; + NSDate *dayBeginTime = [cal dateFromComponents:[cal components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:nowDate]]; + newHabit.nextDoTime = [cal dateByAddingUnit:NSCalendarUnitSecond value:interval / 2 toDate:dayBeginTime options:0]; + while([newHabit.nextDoTime timeIntervalSinceDate:nowDate] < 0) { + newHabit.surplusTimes = [NSNumber numberWithInteger:[newHabit.surplusTimes integerValue] - 1]; + newHabit.nextDoTime = [cal dateByAddingUnit:NSCalendarUnitSecond value:interval toDate:newHabit.nextDoTime options:0]; + } + } + else { + NSTimeInterval surplusTimeInterval = [newHabit.nextPeriodBeginTime timeIntervalSinceDate:nowDate]; + newHabit.nextDoTime = [cal dateByAddingUnit:NSCalendarUnitSecond value:surplusTimeInterval / [newHabit.surplusTimes integerValue] toDate:nowDate options:0]; + } + newHabit.doTime = nil; + newHabit.skipTime = nil; + _habitArray = [Habit MR_findAll]; + _habitArray = [HabitBiz sortHabit:_habitArray]; // 排序 + [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait]; //持久化 + NSLog(@"new Habit:%@", newHabit); + return newHabit; +} + ++(NSDate*)calculateNextPeriodBeginTimeWithTime:(NSDate*)beginTime period:(HabitPeriod)period{ + NSCalendar *cal = [NSCalendar currentCalendar]; + NSDateComponents *dateComps = [cal components:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay fromDate:beginTime];// 获取当前年月日date components,时间单元掩码:NSCalendarUnitYear|NSCalendarUnitMonth|NSCalendarUnitDay + NSDate *dayBeginTime; + NSDate *nextPeriodBeginTime; + dayBeginTime = [cal dateFromComponents:dateComps]; //截取时分秒 + switch (period) { + case HabitPeriodDay: + nextPeriodBeginTime = [cal dateByAddingUnit:NSCalendarUnitDay value:1 toDate:dayBeginTime options:0]; + break; + case HabitPeriodWeek: + nextPeriodBeginTime = [cal dateByAddingUnit:NSCalendarUnitWeekday value:1 toDate:dayBeginTime options:0]; + break; + case HabitPeriodMonth: + nextPeriodBeginTime = [cal dateByAddingUnit:NSCalendarUnitMonth value:1 toDate:dayBeginTime options:0]; + break; + case HabitPeriodYear: + nextPeriodBeginTime = [cal dateByAddingUnit:NSCalendarUnitYear value:1 toDate:dayBeginTime options:0]; + break; + default: + break; + } + return nextPeriodBeginTime; +} + +-(NSInteger)done:(Habit*)habit { + NSDate *nowDate = [NSDate date]; + + // 转到下个周期 FIXME 重复代码 + if([nowDate timeIntervalSinceDate:habit.nextPeriodBeginTime] > 0){ + habit.nextPeriodBeginTime = [HabitBiz calculateNextPeriodBeginTimeWithTime:nowDate period:[habit.period integerValue]]; + habit.surplusTimes = habit.times; + } + + habit.doTime = nowDate; + habit.surplusTimes = [NSNumber numberWithInt:(int)fmax([habit.surplusTimes integerValue] - 1, 0)]; //FIXME 减一,最小减到0 + NSCalendar *cal = [NSCalendar currentCalendar]; //日历 + + // 计算nextDoTime FIXME 重复代码 + if([habit.surplusTimes integerValue] == 0){ + NSDate *nextNextPeriodBeginTime = [HabitBiz calculateNextPeriodBeginTimeWithTime:habit.nextPeriodBeginTime period:[habit.period integerValue]]; + NSTimeInterval periodTimeInterval = [nextNextPeriodBeginTime timeIntervalSinceDate:habit.nextPeriodBeginTime]; + habit.nextDoTime = [cal dateByAddingUnit:NSCalendarUnitSecond value:periodTimeInterval / [habit.surplusTimes integerValue] toDate:habit.nextPeriodBeginTime options:0]; + } + else { + NSTimeInterval surplusTimeInterval = [habit.nextPeriodBeginTime timeIntervalSinceDate:nowDate]; // TODO + habit.nextDoTime = [cal dateByAddingUnit:NSCalendarUnitSecond value:surplusTimeInterval / [habit.surplusTimes integerValue] toDate:habit.nextPeriodBeginTime options:0]; + + } + _habitArray = [HabitBiz sortHabit:_habitArray]; // 排序 + [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait]; //持久化 + return [_habitArray indexOfObject:habit]; +} + +-(NSInteger)skip:(Habit*)habit { + NSDate *nowDate = [NSDate date]; + + // 转到下个周期 FIXME 重复代码 + if([nowDate timeIntervalSinceDate:habit.nextPeriodBeginTime] > 0) { + habit.nextPeriodBeginTime = [HabitBiz calculateNextPeriodBeginTimeWithTime:nowDate period:[habit.period integerValue]]; + habit.surplusTimes = habit.times; + } + habit.skipTime = nowDate; + // surplusTimes不变 + NSCalendar *cal = [NSCalendar currentCalendar]; //日历 + + // 计算nextDoTime FIXME 重复代码 + if([habit.surplusTimes integerValue] == 0){ + NSDate *nextNextPeriodBeginTime = [HabitBiz calculateNextPeriodBeginTimeWithTime:habit.nextPeriodBeginTime period:[habit.period integerValue]]; + NSTimeInterval periodTimeInterval = [nextNextPeriodBeginTime timeIntervalSinceDate:habit.nextPeriodBeginTime]; + habit.nextDoTime = [cal dateByAddingUnit:NSCalendarUnitSecond value:periodTimeInterval / [habit.surplusTimes integerValue] toDate:habit.nextPeriodBeginTime options:0]; + } + else { + NSTimeInterval surplusTimeInterval = [habit.nextPeriodBeginTime timeIntervalSinceDate:nowDate]; // TODO + habit.nextDoTime = [cal dateByAddingUnit:NSCalendarUnitSecond value:surplusTimeInterval / [habit.surplusTimes integerValue] toDate:habit.nextPeriodBeginTime options:0]; + + } + + _habitArray = [HabitBiz sortHabit:_habitArray]; // 排序 + [[NSManagedObjectContext MR_defaultContext] MR_saveToPersistentStoreAndWait]; //持久化 + return [_habitArray indexOfObject:habit]; +} + ++(NSArray*)sortHabit:(NSArray*)habitArray { + // FIXME changeing NSArray to NSMutableArray is better + // FIXME store sorted array is better + return [habitArray sortedArrayUsingComparator:^(id a, id b) { + Habit *habitA = (Habit*)a; + Habit *habitB = (Habit*)b; + NSDate *lastActionTimeA = [habitA lastActionTime]; + NSDate *lastActionTimeB = [habitB lastActionTime]; + if(lastActionTimeA.timeIntervalSince1970 < lastActionTimeB.timeIntervalSince1970) + return (NSComparisonResult)NSOrderedAscending; + else if(lastActionTimeA.timeIntervalSince1970 > lastActionTimeB.timeIntervalSince1970) + return (NSComparisonResult)NSOrderedDescending; + else + return (NSComparisonResult)NSOrderedSame; + }]; +} + ++(HabitBiz*)getInstance { + static HabitBiz *instance = nil; + if(instance == nil) + instance = [[HabitBiz alloc] init]; + return instance; +} +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitMainViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitMainViewController.h" new file mode 100644 index 00000000..0abb12a9 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitMainViewController.h" @@ -0,0 +1,16 @@ +// +// HabitMainViewController.h +// iHabit +// +// Created by 陆钟豪 on 14/12/17. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "HabitTableViewController.h" + +@interface HabitMainViewController : UIViewController + +@property (strong, nonatomic, readonly) HabitTableViewController *habitTableViewController; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitMainViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitMainViewController.m" new file mode 100644 index 00000000..8fcc14e8 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitMainViewController.m" @@ -0,0 +1,64 @@ +// +// HabitMainViewController.m +// iHabit +// +// Created by 陆钟豪 on 14/12/17. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "HabitMainViewController.h" + +@interface HabitMainViewController () + +@end + + +@implementation HabitMainViewController + + +- (void)viewDidLoad { + + [super viewDidLoad]; + HabitTableViewController *habitTableViewController = [[HabitTableViewController alloc] initWithStyle:UITableViewStylePlain]; + UIView *navigationBarView = [[UIView alloc] initWithFrame:CGRectMake(0, -20, 320, 100)]; + navigationBarView.backgroundColor = UIColor.whiteColor; + + UILabel *titleLable = [[UILabel alloc] initWithFrame:CGRectMake(10, 20, 300, 100)]; + titleLable.font = [UIFont fontWithName:@"Raleway-MediumTracked" size:40]; + titleLable.text = @"iHabit"; + + // 添加nav阴影 + navigationBarView.layer.shadowColor = [UIColor blackColor].CGColor; + navigationBarView.layer.shadowOffset = CGSizeMake(0, 0); + navigationBarView.layer.shadowOpacity = 0.5; + navigationBarView.layer.shadowRadius = 5; + + habitTableViewController.view.frame = CGRectMake(0, 80 - 20, 320, 568 - (80 - 20)); + + [self addChildViewController:habitTableViewController]; + + [navigationBarView addSubview:titleLable]; + [self.view addSubview:habitTableViewController.view]; + [self.view addSubview:navigationBarView]; + + _habitTableViewController = habitTableViewController; + +} + + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableCellViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableCellViewController.h" new file mode 100644 index 00000000..bdbddb7b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableCellViewController.h" @@ -0,0 +1,17 @@ +// +// HabitTableCellViewController.h +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "HabitTableViewCell.h" + +@interface HabitTableCellViewController : UIViewController + +@property CGFloat offsetMinX, offsetMaxX; +@property (weak, nonatomic) TimeLineView *timeLineView; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableCellViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableCellViewController.m" new file mode 100644 index 00000000..470aa21b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableCellViewController.m" @@ -0,0 +1,233 @@ +// +// HabitTableCellViewController.m +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "HabitTableCellViewController.h" +#import "TimeLineView.h" +#import "math.h" +#import "CellActionView.h" +#import "HabitBiz.h" +#import "HabitTableViewCell.h" + +@interface HabitTableCellViewController () + +@end + +@implementation HabitTableCellViewController{ + CGPoint _touchBeginPoint; + BOOL _isTouchBegin; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + HabitTableViewCell *cell = (HabitTableViewCell*) super.view; + + TimeLineView *timeLine = [[TimeLineView alloc] initWithFrame:CGRectMake(67, 50, 242, 30)]; + timeLine.backgroundColor = UIColor.clearColor; + [cell.contentView addSubview:timeLine]; + self.timeLineView = timeLine; + + UIView *doneAction = [[CellActionView alloc] initWithFrame:CGRectMake(-100, 0, 100, 80)]; + doneAction.backgroundColor = UIColor.greenColor; + [cell.contentView addSubview:doneAction]; + + UIView *skipAction = [[CellActionView alloc] initWithFrame:CGRectMake(320, 0, 100, 80)]; + skipAction.backgroundColor = UIColor.blueColor; + [cell.contentView addSubview:skipAction]; + + cell.contentView.layer.masksToBounds = NO; + + cell.textLabel.font = [UIFont fontWithName:@"Raleway-Tracked" size:22]; + cell.contentView.backgroundColor = UIColor.whiteColor; + + [cell addObserver:self forKeyPath:@"habit" options:NSKeyValueObservingOptionNew | NSKeyValueObservingOptionOld context:nil]; + + self.offsetMinX = -100; + self.offsetMaxX = 100; + + [NSTimer scheduledTimerWithTimeInterval:1 // FIXME 1秒钟刷新一次是为了测试 + target:[NSBlockOperation blockOperationWithBlock:^{ + cell.habit = cell.habit; //刷新 + }] + selector:@selector(main) + userInfo:nil + repeats:YES + ]; +} + +-(void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + HabitTableViewCell *cell = (HabitTableViewCell*) self.view; + Habit *habit = cell.habit; + + // observe self.view(cell view).habit +// if([keyPath isEqualToString:@"habit"]){ +// Habit *oldHabit = [change valueForKey:NSKeyValueChangeOldKey]; +// if((NSNull *)oldHabit != [NSNull null]) { // NSNull坑死人啊! +// // FIXME should I remove these observer?? +// [oldHabit removeObserver:self forKeyPath:@"title"]; +// [oldHabit removeObserver:self forKeyPath:@"iconKey"]; +// [oldHabit removeObserver:self forKeyPath:@"period"]; +// [oldHabit removeObserver:self forKeyPath:@"times"]; +// [oldHabit removeObserver:self forKeyPath:@"createTime"]; +// [oldHabit removeObserver:self forKeyPath:@"nextDoTime"]; +// [oldHabit removeObserver:self forKeyPath:@"nextPeriodBeginTime"]; +// [oldHabit removeObserver:self forKeyPath:@"doTime"]; +// [oldHabit removeObserver:self forKeyPath:@"skipTime"]; +// [oldHabit removeObserver:self forKeyPath:@"surplusTimes"]; +// } +// [habit addObserver:self forKeyPath:@"title" options:0 context:nil]; +// [habit addObserver:self forKeyPath:@"iconKey" options:0 context:nil]; +// [habit addObserver:self forKeyPath:@"period" options:0 context:nil]; +// [habit addObserver:self forKeyPath:@"times" options:0 context:nil]; +// [habit addObserver:self forKeyPath:@"createTime" options:0 context:nil]; +// [habit addObserver:self forKeyPath:@"nextDoTime" options:0 context:nil]; +// [habit addObserver:self forKeyPath:@"nextPeriodBeginTime" options:0 context:nil]; +// [habit addObserver:self forKeyPath:@"doTime" options:0 context:nil]; +// [habit addObserver:self forKeyPath:@"skipTime" options:0 context:nil]; +// [habit addObserver:self forKeyPath:@"surplusTimes" options:0 context:nil]; +// } + + cell.textLabel.text = habit.title; + + // 设置图标 + UIImage *iconImage = [UIImage imageNamed:habit.iconName]; + CGSize iconSize = iconImage.size; + cell.imageView.maskView = [[UIImageView alloc] initWithImage:iconImage]; + UIGraphicsBeginImageContext(iconSize); + CGContextRef contextRef = UIGraphicsGetCurrentContext(); + CGContextSetFillColorWithColor(contextRef, habit.color.CGColor); + CGContextFillRect(contextRef, CGRectMake(0, 0, iconSize.width, iconSize.height)); + cell.imageView.image = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + // FIXME 整合到HabitBiz中 + NSDate *nowDate = [NSDate date]; + if([habit.nextDoTime timeIntervalSinceDate:nowDate] > 0) { + NSDate *lastActionTime = habit.lastActionTime; + self.timeLineView.progressRatio = fmax([nowDate timeIntervalSinceDate:lastActionTime] / [habit.nextDoTime timeIntervalSinceDate:lastActionTime], 0); + if(habit.doTime != nil) { + NSTimeInterval nowTimeIntervalSinceDoTime = [nowDate timeIntervalSinceDate:habit.doTime]; + NSTimeInterval nextDoTimeIntervalSinceNow = [habit.nextDoTime timeIntervalSinceDate:nowDate]; + if(nowTimeIntervalSinceDoTime < 60) { + self.timeLineView.tip = @"Just done!"; + } + else if(nextDoTimeIntervalSinceNow < 60 * 5) { + self.timeLineView.tip = @"Do soon!"; + } + else { + self.timeLineView.tip = [NSString stringWithFormat:@"%f", nowTimeIntervalSinceDoTime]; + } + } + else { + self.timeLineView.tip = @"New!"; + } + } + else if([nowDate timeIntervalSinceDate:habit.nextPeriodBeginTime] > 0 && habit.surplusTimes > 0){ + self.timeLineView.progressRatio = 1.1; // late + self.timeLineView.tip = @"Late!"; + } + else { + self.timeLineView.progressRatio = 1.0; // do now + self.timeLineView.tip = @"Do now!"; + } + self.timeLineView.color = habit.color; + [self.timeLineView setNeedsDisplay]; // FIXME 使用Observer?? +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { + UITouch *touch = [touches anyObject]; + _touchBeginPoint = [touch locationInView:self.view]; + _isTouchBegin = YES; +} + +-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { + if(!_isTouchBegin) return; + UITouch *touch = [touches anyObject]; + CGPoint touchPoint = [touch locationInView:self.view]; + CGFloat offsetX = touchPoint.x - _touchBeginPoint.x; + offsetX = fmaxf(offsetX, self.offsetMinX); + offsetX = fminf(offsetX, self.offsetMaxX); + HabitTableViewCell *cell = (HabitTableViewCell*)(self.view); + UIView *cellContentView = cell.contentView; + cellContentView.frame = CGRectMake(offsetX, + cellContentView.frame.origin.y, + cellContentView.frame.size.width, + cellContentView.frame.size.height); + + if(0 < offsetX && offsetX < self.offsetMaxX) { + float offsetRatio = offsetX / self.offsetMaxX; + cellContentView.backgroundColor = [UIColor colorWithRed:0 green:1 blue:0 alpha:0.3 * offsetRatio]; + } + else if(self.offsetMinX < offsetX && offsetX < 0) { + float offsetRatio = offsetX / self.offsetMinX; + cellContentView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:1 alpha:0.3 * offsetRatio]; + } + + NSInteger afterActionIndex; + if(offsetX == self.offsetMinX) + afterActionIndex = [[HabitBiz getInstance]skip:cell.habit]; + else if(offsetX == self.offsetMaxX) + afterActionIndex = [[HabitBiz getInstance]done:cell.habit]; + else + return; + + cell.habit = cell.habit; //刷新 + + UITableView *tableView = ((UITableViewController*)self.parentViewController).tableView; + _isTouchBegin = NO; + + // done skip动画效果 + [UIView animateKeyframesWithDuration:.5 delay:0.0 options:UIViewKeyframeAnimationOptionCalculationModeLinear animations:^{ + [UIView addKeyframeWithRelativeStartTime:0.0 relativeDuration:0.5 animations:^{ + + cell.layer.transform = CATransform3DRotate(cell.layer.transform, -M_PI/2, 1.0f, 0.0f, 0.0f); + }]; + + [UIView addKeyframeWithRelativeStartTime:0.5 relativeDuration:0.0 animations:^{ + cell.layer.transform = CATransform3DRotate(cell.layer.transform, M_PI, 1.0f, 0.0f, 0.0f); + cellContentView.frame = CGRectMake(0, + cellContentView.frame.origin.y, + cellContentView.frame.size.width, + cellContentView.frame.size.height); + }]; + + [UIView addKeyframeWithRelativeStartTime:0.5 relativeDuration:0.5 animations:^{ + cell.layer.transform = CATransform3DRotate(cell.layer.transform, -M_PI/2, 1.0f, 0.0f, 0.0f); + }]; + } completion:^(BOOL finished){ + [tableView moveRowAtIndexPath:[tableView indexPathForCell:cell] toIndexPath:[NSIndexPath indexPathForRow:afterActionIndex inSection:0]]; + }]; + +} + + + +-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { + UIView *cellContentView = ((UITableViewCell*)(self.view)).contentView; + [UIView animateWithDuration:0.3f delay:0.0f options:UIViewAnimationOptionCurveEaseInOut animations:^{ + cellContentView.frame = CGRectMake(0, + cellContentView.frame.origin.y, + cellContentView.frame.size.width, + cellContentView.frame.size.height); + cellContentView.backgroundColor = [UIColor clearColor]; + } completion:nil]; +} + +-(void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { + [self touchesEnded:touches withEvent:event]; +} + +-(void)dealloc { + [self.view removeObserver:self forKeyPath:@"habit"]; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewCell.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewCell.h" new file mode 100644 index 00000000..e837921d --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewCell.h" @@ -0,0 +1,18 @@ +// +// HabitTableCellView.h +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "Habit.h" +#import "TimeLineView.h" + +@interface HabitTableViewCell : UITableViewCell + +@property (weak, nonatomic) UIColor *cellColor; +@property (weak, nonatomic) Habit *habit; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewCell.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewCell.m" new file mode 100644 index 00000000..52453407 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewCell.m" @@ -0,0 +1,22 @@ +// +// HabitTableCellView.m +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "HabitTableViewCell.h" +#import "TimeLineView.h" + +@implementation HabitTableViewCell + +-(void)layoutSubviews { + [super layoutSubviews]; + self.imageView.frame = CGRectMake(15, 24, 32, 32); + self.textLabel.frame = CGRectMake(63.5, 22, self.textLabel.frame.size.width, self.textLabel.frame.size.height); + self.textLabel.backgroundColor = UIColor.clearColor; +} + + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewController.h" new file mode 100644 index 00000000..d70ec65e --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewController.h" @@ -0,0 +1,15 @@ +// +// HabitTableViewController.h +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "Habit.h" + +@interface HabitTableViewController : UITableViewController + +@end + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewController.m" new file mode 100644 index 00000000..f66277f9 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HabitTableViewController.m" @@ -0,0 +1,100 @@ +// +// HabitTableViewController.m +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "HabitTableViewController.h" +#import "Habit.h" +#import "HabitTableViewCell.h" +#import "HabitTableCellViewController.h" +#import "CellActionView.h" +#import "HabitBiz.h" +#import "AddHabitViewController.h" +#import + +@interface HabitTableViewController () + +@end + +@implementation HabitTableViewController{ + HabitBiz* _habitBiz; +} + +-(void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { + if(self.tableView.contentOffset.y <= -50) { + CATransition *animation = [CATransition animation]; + animation.delegate = self; + animation.duration = 0.7; + animation.timingFunction = UIViewAnimationCurveEaseInOut; + animation.type = @"cube"; + animation.subtype = kCATransitionFromBottom; + UINavigationController *navigationController = self.navigationController; + [[navigationController.view layer] addAnimation:animation forKey:@"animation"]; + UIViewController* addHabitViewController = [[AddHabitViewController alloc] initWithNibName:@"AddHabitViewController" bundle:nil]; + [navigationController pushViewController:addHabitViewController animated:NO]; + } +} + +-(void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + [self.tableView reloadData]; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + // 隐藏分隔线 + self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + //这个标准默认为YES,如果设置为NO,这消息一旦传递给subView,这scroll事件不会再发生。 + self.tableView.canCancelContentTouches = NO; + //这个标志默认是YES,使用上面的150ms的timer,如果设置为NO,touch事件立即传递给subView,不会有150ms的等待。 + self.tableView.delaysContentTouches = NO; + UIView* tableHeader = [[CellActionView alloc] initWithFrame:CGRectMake(0, -200, 320, 200)]; + + tableHeader.backgroundColor = UIColor.blueColor; + + self.tableView.delegate = self; + + _habitBiz = [HabitBiz getInstance]; + [self.tableView addSubview:tableHeader]; + +} + + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +#pragma mark - Table view data source + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [_habitBiz.habitArray count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString * cellIdentifier = @"HabitCell"; + HabitTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; + if (cell == nil) { + cell = [[HabitTableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; + HabitTableCellViewController *habitTableCellViewController = [[HabitTableCellViewController alloc] init]; + habitTableCellViewController.view = cell; + [habitTableCellViewController viewDidLoad]; + [self addChildViewController:habitTableCellViewController]; + } + NSInteger index = [indexPath row]; + Habit *habit = [_habitBiz.habitArray objectAtIndex:index]; + cell.habit = habit;//刷新 + return cell; +} + + +-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath +{ + // 设置单元格高度 + return 80; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryAction.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryAction.h" new file mode 100644 index 00000000..63a46ed2 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryAction.h" @@ -0,0 +1,19 @@ +// +// HistoryAction.h +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import + + +@interface HistoryAction : NSManagedObject + +@property (nonatomic, retain) NSString * habitId; +@property (nonatomic, retain) NSNumber * type; +@property (nonatomic, retain) NSDate * actionTime; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryAction.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryAction.m" new file mode 100644 index 00000000..11a68164 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryAction.m" @@ -0,0 +1,18 @@ +// +// HistoryAction.m +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "HistoryAction.h" + + +@implementation HistoryAction + +@dynamic habitId; +@dynamic type; +@dynamic actionTime; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryPeriod.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryPeriod.h" new file mode 100644 index 00000000..16c30c13 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryPeriod.h" @@ -0,0 +1,21 @@ +// +// HistoryPeriod.h +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import + + +@interface HistoryPeriod : NSManagedObject + +@property (nonatomic, retain) NSString * habitId; +@property (nonatomic, retain) NSNumber * period; +@property (nonatomic, retain) NSNumber * times; +@property (nonatomic, retain) NSDate * periodEndTime; +@property (nonatomic, retain) NSDate * doneTimes; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryPeriod.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryPeriod.m" new file mode 100644 index 00000000..a79dfa4c --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/HistoryPeriod.m" @@ -0,0 +1,20 @@ +// +// HistoryPeriod.m +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "HistoryPeriod.h" + + +@implementation HistoryPeriod + +@dynamic habitId; +@dynamic period; +@dynamic times; +@dynamic periodEndTime; +@dynamic doneTimes; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/IconPickerController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/IconPickerController.h" new file mode 100644 index 00000000..85cc5634 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/IconPickerController.h" @@ -0,0 +1,15 @@ +// +// IconPickerController.h +// iHabit +// +// Created by 陆钟豪 on 14/12/20. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "GridPickerViewController.h" + +@interface IconPickerController : GridPickerViewController + +@property (strong, readonly) NSString *selectedIconName; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/IconPickerController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/IconPickerController.m" new file mode 100644 index 00000000..e95effbb --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/IconPickerController.m" @@ -0,0 +1,78 @@ +// +// IconPickerController.m +// iHabit +// +// Created by 陆钟豪 on 14/12/20. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "IconPickerController.h" +#import "Habit.h" +#import "Util.h" +#import + +@interface IconPickerController () + +@end + +@implementation IconPickerController + +- (void)viewDidLoad { + + [super viewDidLoad]; + NSDictionary* iconColorDict = [Habit iconColorDict]; + [iconColorDict enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { + NSString *iconName = (NSString *)key; + UIColor *iconColor = (UIColor *)obj; + // 设置图标 + UIImage *iconFileImage = [UIImage imageNamed:iconName]; + CGSize iconSize = iconFileImage.size; + UIGraphicsBeginImageContextWithOptions(iconSize, NO, 0.0); // That way, on a double-resolution screen, you'll get a double-resolution graphics context. 否则有锯齿,就是这样! + CGContextRef contextRef = UIGraphicsGetCurrentContext(); + [iconFileImage drawInRect:CGRectMake(0, 0, iconSize.width, iconSize.height)]; + CGContextSetBlendMode(contextRef, kCGBlendModeSourceIn); + CGContextSetFillColorWithColor(contextRef, iconColor.CGColor); + CGContextFillRect(contextRef, CGRectMake(0, 0, iconSize.width, iconSize.height)); + UIImage *iconImage = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + //UIImageView *iconImageView = [[UIImageView alloc] initWithImage:iconImage]; + UIButton *iconButton = [UIButton buttonWithType:UIButtonTypeCustom]; + iconButton.frame = CGRectInset(CGRectMake(0, 0, iconImage.size.width, iconImage.size.height), -10, -10); + UIView *selectedView = [[UIView alloc] initWithFrame:CGRectMake(10 - 3, 10 - 3, iconImage.size.width + 3 * 2, iconImage.size.height + 3 * 2)]; + [iconButton setImage:iconImage forState:UIControlStateNormal]; + [iconButton addTarget:self action:@selector(selectCellView:) forControlEvents:UIControlEventTouchUpInside]; + ActionBlock* actionBlock = [[ActionBlock alloc] initWith:^(id sender){ + _selectedIconName = iconName; + }]; + [iconButton addTarget:actionBlock action:@selector(action:) forControlEvents:UIControlEventTouchUpInside]; + objc_setAssociatedObject(self, "selectedViewFrame", selectedView, OBJC_ASSOCIATION_RETAIN_NONATOMIC);//runtime添加属性 哈哈 + [self addCellView:iconButton]; + [self addChildViewController:actionBlock];//button的target必须是contrlloer,坑 + }]; + self.numberOfCellInRow = 4; + self.horizontalSpace = 5; + self.verticalSpace = 5; + [self layoutCellViews]; + [self selectCellViewWithIndex:0]; +} + +-(void)action:(id) sender{ + NSLog(@"hello"); +}; + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/AppIcon.appiconset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/AppIcon.appiconset/Contents.json" new file mode 100644 index 00000000..c2616cab --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/AppIcon.appiconset/Contents.json" @@ -0,0 +1,69 @@ +{ + "images" : [ + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "29x29", + "scale" : "3x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "40x40", + "scale" : "3x" + }, + { + "size" : "60x60", + "idiom" : "iphone", + "filename" : "icon@2x.png", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "60x60", + "scale" : "3x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "29x29", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "40x40", + "scale" : "2x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "76x76", + "scale" : "2x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/AppIcon.appiconset/icon@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/AppIcon.appiconset/icon@2x.png" new file mode 100644 index 00000000..1e58fd04 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/AppIcon.appiconset/icon@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/airplane.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/airplane.imageset/Contents.json" new file mode 100644 index 00000000..67057b66 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/airplane.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "airplane@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/airplane.imageset/airplane@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/airplane.imageset/airplane@2x.png" new file mode 100644 index 00000000..bddb4338 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/airplane.imageset/airplane@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/alarm.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/alarm.imageset/Contents.json" new file mode 100644 index 00000000..926d4d5d --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/alarm.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "alarm@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/alarm.imageset/alarm@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/alarm.imageset/alarm@2x.png" new file mode 100644 index 00000000..c3889e37 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/alarm.imageset/alarm@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/app-badge-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/app-badge-icon.imageset/Contents.json" new file mode 100644 index 00000000..c2e63310 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/app-badge-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "app-badge-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/app-badge-icon.imageset/app-badge-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/app-badge-icon.imageset/app-badge-icon.png" new file mode 100644 index 00000000..d8c25212 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/app-badge-icon.imageset/app-badge-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/apple.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/apple.imageset/Contents.json" new file mode 100644 index 00000000..3f3abd28 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/apple.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "apple@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/apple.imageset/apple@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/apple.imageset/apple@2x.png" new file mode 100644 index 00000000..d86d8cf5 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/apple.imageset/apple@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/archive.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/archive.imageset/Contents.json" new file mode 100644 index 00000000..b8074862 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/archive.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "archive@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/archive.imageset/archive@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/archive.imageset/archive@2x.png" new file mode 100644 index 00000000..e49d5850 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/archive.imageset/archive@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down-icon.imageset/Contents.json" new file mode 100644 index 00000000..6f966a1b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "arrow-down-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down-icon.imageset/arrow-down-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down-icon.imageset/arrow-down-icon.png" new file mode 100644 index 00000000..5ae1261f Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down-icon.imageset/arrow-down-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down.imageset/Contents.json" new file mode 100644 index 00000000..71d381e6 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "arrow-down@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down.imageset/arrow-down@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down.imageset/arrow-down@2x.png" new file mode 100644 index 00000000..5ae1261f Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-down.imageset/arrow-down@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left-icon.imageset/Contents.json" new file mode 100644 index 00000000..5854d105 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "arrow-left-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left-icon.imageset/arrow-left-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left-icon.imageset/arrow-left-icon.png" new file mode 100644 index 00000000..d0a8863a Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left-icon.imageset/arrow-left-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left.imageset/Contents.json" new file mode 100644 index 00000000..67529b52 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "arrow-left@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left.imageset/arrow-left@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left.imageset/arrow-left@2x.png" new file mode 100644 index 00000000..d0a8863a Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-left.imageset/arrow-left@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right-icon.imageset/Contents.json" new file mode 100644 index 00000000..c5cda5f0 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "arrow-right-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right-icon.imageset/arrow-right-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right-icon.imageset/arrow-right-icon.png" new file mode 100644 index 00000000..61a5a33b Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right-icon.imageset/arrow-right-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right.imageset/Contents.json" new file mode 100644 index 00000000..061f011a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "arrow-right@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right.imageset/arrow-right@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right.imageset/arrow-right@2x.png" new file mode 100644 index 00000000..61a5a33b Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-right.imageset/arrow-right@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-up.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-up.imageset/Contents.json" new file mode 100644 index 00000000..24c73da4 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-up.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "arrow-up@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-up.imageset/arrow-up@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-up.imageset/arrow-up@2x.png" new file mode 100644 index 00000000..e28e4529 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/arrow-up.imageset/arrow-up@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bag.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bag.imageset/Contents.json" new file mode 100644 index 00000000..87f41036 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bag.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "bag@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bag.imageset/bag@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bag.imageset/bag@2x.png" new file mode 100644 index 00000000..6b1741e4 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bag.imageset/bag@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/balloon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/balloon.imageset/Contents.json" new file mode 100644 index 00000000..c63b0c9b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/balloon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "balloon@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/balloon.imageset/balloon@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/balloon.imageset/balloon@2x.png" new file mode 100644 index 00000000..5ce7768b Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/balloon.imageset/balloon@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/basket.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/basket.imageset/Contents.json" new file mode 100644 index 00000000..be8ff952 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/basket.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "basket@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/basket.imageset/basket@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/basket.imageset/basket@2x.png" new file mode 100644 index 00000000..52b7bdc3 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/basket.imageset/basket@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bed.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bed.imageset/Contents.json" new file mode 100644 index 00000000..9c0aa76f --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bed.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "bed@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bed.imageset/bed@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bed.imageset/bed@2x.png" new file mode 100644 index 00000000..bf4b4f79 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bed.imageset/bed@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bell.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bell.imageset/Contents.json" new file mode 100644 index 00000000..a4f2a395 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bell.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "bell@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bell.imageset/bell@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bell.imageset/bell@2x.png" new file mode 100644 index 00000000..e3a74dc2 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bell.imageset/bell@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bike.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bike.imageset/Contents.json" new file mode 100644 index 00000000..7876def1 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bike.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "bike@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bike.imageset/bike@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bike.imageset/bike@2x.png" new file mode 100644 index 00000000..b1cd1f4f Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bike.imageset/bike@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/book.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/book.imageset/Contents.json" new file mode 100644 index 00000000..16b9089a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/book.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "book@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/book.imageset/book@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/book.imageset/book@2x.png" new file mode 100644 index 00000000..6d19178c Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/book.imageset/book@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bottle.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bottle.imageset/Contents.json" new file mode 100644 index 00000000..6149869b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bottle.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "bottle@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bottle.imageset/bottle@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bottle.imageset/bottle@2x.png" new file mode 100644 index 00000000..b3ec3789 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bottle.imageset/bottle@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brain.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brain.imageset/Contents.json" new file mode 100644 index 00000000..675ab761 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brain.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "brain@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brain.imageset/brain@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brain.imageset/brain@2x.png" new file mode 100644 index 00000000..350e4d32 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brain.imageset/brain@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/briefcase.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/briefcase.imageset/Contents.json" new file mode 100644 index 00000000..c7d2fe25 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/briefcase.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "briefcase@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/briefcase.imageset/briefcase@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/briefcase.imageset/briefcase@2x.png" new file mode 100644 index 00000000..9b0608f9 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/briefcase.imageset/briefcase@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brush.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brush.imageset/Contents.json" new file mode 100644 index 00000000..ccf155ef --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brush.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "brush@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brush.imageset/brush@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brush.imageset/brush@2x.png" new file mode 100644 index 00000000..62513e67 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/brush.imageset/brush@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bubble.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bubble.imageset/Contents.json" new file mode 100644 index 00000000..4dcd2140 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bubble.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "bubble@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bubble.imageset/bubble@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bubble.imageset/bubble@2x.png" new file mode 100644 index 00000000..e7000787 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bubble.imageset/bubble@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bus.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bus.imageset/Contents.json" new file mode 100644 index 00000000..7aeeef49 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bus.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "bus@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bus.imageset/bus@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bus.imageset/bus@2x.png" new file mode 100644 index 00000000..804bc503 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/bus.imageset/bus@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cake.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cake.imageset/Contents.json" new file mode 100644 index 00000000..caad995c --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cake.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "cake@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cake.imageset/cake@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cake.imageset/cake@2x.png" new file mode 100644 index 00000000..f066540e Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cake.imageset/cake@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/camera.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/camera.imageset/Contents.json" new file mode 100644 index 00000000..82266348 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/camera.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "camera@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/camera.imageset/camera@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/camera.imageset/camera@2x.png" new file mode 100644 index 00000000..fd893f83 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/camera.imageset/camera@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/car.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/car.imageset/Contents.json" new file mode 100644 index 00000000..1615010f --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/car.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "car@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/car.imageset/car@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/car.imageset/car@2x.png" new file mode 100644 index 00000000..c1a27047 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/car.imageset/car@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/children.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/children.imageset/Contents.json" new file mode 100644 index 00000000..765d13c7 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/children.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "children@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/children.imageset/children@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/children.imageset/children@2x.png" new file mode 100644 index 00000000..ef3fcb3e Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/children.imageset/children@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/clock.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/clock.imageset/Contents.json" new file mode 100644 index 00000000..85a7714d --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/clock.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "clock@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/clock.imageset/clock@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/clock.imageset/clock@2x.png" new file mode 100644 index 00000000..d128c700 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/clock.imageset/clock@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/close.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/close.imageset/Contents.json" new file mode 100644 index 00000000..42e813d6 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/close.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "close@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/close.imageset/close@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/close.imageset/close@2x.png" new file mode 100644 index 00000000..2e1ea2c5 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/close.imageset/close@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/coins.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/coins.imageset/Contents.json" new file mode 100644 index 00000000..1b7af45c --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/coins.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "coins@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/coins.imageset/coins@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/coins.imageset/coins@2x.png" new file mode 100644 index 00000000..a1a6d996 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/coins.imageset/coins@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/compass.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/compass.imageset/Contents.json" new file mode 100644 index 00000000..7649ce44 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/compass.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "compass@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/compass.imageset/compass@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/compass.imageset/compass@2x.png" new file mode 100644 index 00000000..6f421bf0 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/compass.imageset/compass@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cone.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cone.imageset/Contents.json" new file mode 100644 index 00000000..1fc6ccbe --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cone.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "cone@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cone.imageset/cone@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cone.imageset/cone@2x.png" new file mode 100644 index 00000000..82a39d13 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cone.imageset/cone@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/credit.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/credit.imageset/Contents.json" new file mode 100644 index 00000000..82b6ac0b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/credit.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "credit@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/credit.imageset/credit@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/credit.imageset/credit@2x.png" new file mode 100644 index 00000000..62261746 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/credit.imageset/credit@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cup.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cup.imageset/Contents.json" new file mode 100644 index 00000000..2fc1db48 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cup.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "cup@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cup.imageset/cup@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cup.imageset/cup@2x.png" new file mode 100644 index 00000000..7726376b Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/cup.imageset/cup@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dice.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dice.imageset/Contents.json" new file mode 100644 index 00000000..8850cbbf --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dice.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "dice@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dice.imageset/dice@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dice.imageset/dice@2x.png" new file mode 100644 index 00000000..d2aea4b4 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dice.imageset/dice@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disclosure-indicator.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disclosure-indicator.imageset/Contents.json" new file mode 100644 index 00000000..8f8af423 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disclosure-indicator.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "disclosure-indicator@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disclosure-indicator.imageset/disclosure-indicator@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disclosure-indicator.imageset/disclosure-indicator@2x.png" new file mode 100644 index 00000000..de4ff834 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disclosure-indicator.imageset/disclosure-indicator@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disco-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disco-icon.imageset/Contents.json" new file mode 100644 index 00000000..798f15a3 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disco-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "disco-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disco-icon.imageset/disco-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disco-icon.imageset/disco-icon.png" new file mode 100644 index 00000000..7b66f574 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/disco-icon.imageset/disco-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/droplet.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/droplet.imageset/Contents.json" new file mode 100644 index 00000000..632d107b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/droplet.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "droplet@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/droplet.imageset/droplet@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/droplet.imageset/droplet@2x.png" new file mode 100644 index 00000000..b8b9464a Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/droplet.imageset/droplet@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dumbbell.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dumbbell.imageset/Contents.json" new file mode 100644 index 00000000..05d7adf9 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dumbbell.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "dumbbell@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dumbbell.imageset/dumbbell@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dumbbell.imageset/dumbbell@2x.png" new file mode 100644 index 00000000..7fecd024 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/dumbbell.imageset/dumbbell@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/earth.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/earth.imageset/Contents.json" new file mode 100644 index 00000000..01811044 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/earth.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "earth@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/earth.imageset/earth@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/earth.imageset/earth@2x.png" new file mode 100644 index 00000000..621969c2 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/earth.imageset/earth@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelop.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelop.imageset/Contents.json" new file mode 100644 index 00000000..c4a62b11 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelop.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "envelop@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelop.imageset/envelop@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelop.imageset/envelop@2x.png" new file mode 100644 index 00000000..93bd15db Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelop.imageset/envelop@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelope-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelope-icon.imageset/Contents.json" new file mode 100644 index 00000000..7e1c2c00 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelope-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "envelope-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelope-icon.imageset/envelope-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelope-icon.imageset/envelope-icon.png" new file mode 100644 index 00000000..93bd15db Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/envelope-icon.imageset/envelope-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/facebook.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/facebook.imageset/Contents.json" new file mode 100644 index 00000000..da920f54 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/facebook.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "facebook@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/facebook.imageset/facebook@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/facebook.imageset/facebook@2x.png" new file mode 100644 index 00000000..dc67e78e Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/facebook.imageset/facebook@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/feedback-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/feedback-icon.imageset/Contents.json" new file mode 100644 index 00000000..e1105e1a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/feedback-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "feedback-icon@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/feedback-icon.imageset/feedback-icon@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/feedback-icon.imageset/feedback-icon@2x.png" new file mode 100644 index 00000000..e7000787 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/feedback-icon.imageset/feedback-icon@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/fire.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/fire.imageset/Contents.json" new file mode 100644 index 00000000..b3312169 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/fire.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "fire@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/fire.imageset/fire@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/fire.imageset/fire@2x.png" new file mode 100644 index 00000000..14201684 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/fire.imageset/fire@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/flower.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/flower.imageset/Contents.json" new file mode 100644 index 00000000..8222c1eb --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/flower.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "flower@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/flower.imageset/flower@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/flower.imageset/flower@2x.png" new file mode 100644 index 00000000..91ba6273 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/flower.imageset/flower@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/food.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/food.imageset/Contents.json" new file mode 100644 index 00000000..9fa10cb9 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/food.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "food@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/food.imageset/food@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/food.imageset/food@2x.png" new file mode 100644 index 00000000..82c36bda Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/food.imageset/food@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gamepad.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gamepad.imageset/Contents.json" new file mode 100644 index 00000000..6d05d74a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gamepad.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "gamepad@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gamepad.imageset/gamepad@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gamepad.imageset/gamepad@2x.png" new file mode 100644 index 00000000..1bfbffbc Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gamepad.imageset/gamepad@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gas-pump.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gas-pump.imageset/Contents.json" new file mode 100644 index 00000000..26e18dba --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gas-pump.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "gas-pump@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gas-pump.imageset/gas-pump@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gas-pump.imageset/gas-pump@2x.png" new file mode 100644 index 00000000..0092063b Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gas-pump.imageset/gas-pump@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gift.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gift.imageset/Contents.json" new file mode 100644 index 00000000..3d0961a7 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gift.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "gift@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gift.imageset/gift@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gift.imageset/gift@2x.png" new file mode 100644 index 00000000..c75f9d2c Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/gift.imageset/gift@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-cocktail.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-cocktail.imageset/Contents.json" new file mode 100644 index 00000000..decd9647 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-cocktail.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "glass-cocktail@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-cocktail.imageset/glass-cocktail@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-cocktail.imageset/glass-cocktail@2x.png" new file mode 100644 index 00000000..c0869fa0 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-cocktail.imageset/glass-cocktail@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-wine.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-wine.imageset/Contents.json" new file mode 100644 index 00000000..680b74cf --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-wine.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "glass-wine@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-wine.imageset/glass-wine@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-wine.imageset/glass-wine@2x.png" new file mode 100644 index 00000000..6e65545f Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glass-wine.imageset/glass-wine@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glasses.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glasses.imageset/Contents.json" new file mode 100644 index 00000000..bb1db64f --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glasses.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "glasses@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glasses.imageset/glasses@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glasses.imageset/glasses@2x.png" new file mode 100644 index 00000000..ec89201f Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/glasses.imageset/glasses@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation-icon.imageset/Contents.json" new file mode 100644 index 00000000..e5daf717 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "graduation-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation-icon.imageset/graduation-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation-icon.imageset/graduation-icon.png" new file mode 100644 index 00000000..859d617f Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation-icon.imageset/graduation-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation.imageset/Contents.json" new file mode 100644 index 00000000..d7e2d1a7 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "graduation@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation.imageset/graduation@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation.imageset/graduation@2x.png" new file mode 100644 index 00000000..859d617f Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/graduation.imageset/graduation@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/hanger.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/hanger.imageset/Contents.json" new file mode 100644 index 00000000..c870c13e --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/hanger.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "hanger@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/hanger.imageset/hanger@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/hanger.imageset/hanger@2x.png" new file mode 100644 index 00000000..94d893dd Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/hanger.imageset/hanger@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/happy.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/happy.imageset/Contents.json" new file mode 100644 index 00000000..30eccb7a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/happy.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "happy@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/happy.imageset/happy@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/happy.imageset/happy@2x.png" new file mode 100644 index 00000000..a3949390 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/happy.imageset/happy@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/health.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/health.imageset/Contents.json" new file mode 100644 index 00000000..cf8d0fd5 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/health.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "health@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/health.imageset/health@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/health.imageset/health@2x.png" new file mode 100644 index 00000000..d5679ad5 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/health.imageset/health@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/heart.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/heart.imageset/Contents.json" new file mode 100644 index 00000000..fdcec403 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/heart.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "heart@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/heart.imageset/heart@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/heart.imageset/heart@2x.png" new file mode 100644 index 00000000..890f9eeb Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/heart.imageset/heart@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/home.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/home.imageset/Contents.json" new file mode 100644 index 00000000..e9bf0961 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/home.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "home@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/home.imageset/home@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/home.imageset/home@2x.png" new file mode 100644 index 00000000..41c80f3f Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/home.imageset/home@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/howto-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/howto-icon.imageset/Contents.json" new file mode 100644 index 00000000..fbbfe656 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/howto-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "howto-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/howto-icon.imageset/howto-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/howto-icon.imageset/howto-icon.png" new file mode 100644 index 00000000..d89097c6 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/howto-icon.imageset/howto-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/info-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/info-icon.imageset/Contents.json" new file mode 100644 index 00000000..5d956d89 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/info-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "info-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/info-icon.imageset/info-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/info-icon.imageset/info-icon.png" new file mode 100644 index 00000000..4fab19cb Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/info-icon.imageset/info-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/key.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/key.imageset/Contents.json" new file mode 100644 index 00000000..a9561227 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/key.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "key@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/key.imageset/key@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/key.imageset/key@2x.png" new file mode 100644 index 00000000..4b594a2d Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/key.imageset/key@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lamp.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lamp.imageset/Contents.json" new file mode 100644 index 00000000..0f88f377 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lamp.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "lamp@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lamp.imageset/lamp@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lamp.imageset/lamp@2x.png" new file mode 100644 index 00000000..844c4302 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lamp.imageset/lamp@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/life-pulse-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/life-pulse-icon.imageset/Contents.json" new file mode 100644 index 00000000..13ff31ae --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/life-pulse-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "life-pulse-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/life-pulse-icon.imageset/life-pulse-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/life-pulse-icon.imageset/life-pulse-icon.png" new file mode 100644 index 00000000..d5679ad5 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/life-pulse-icon.imageset/life-pulse-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lock-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lock-icon.imageset/Contents.json" new file mode 100644 index 00000000..0596ae17 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lock-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "lock-icon@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lock-icon.imageset/lock-icon@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lock-icon.imageset/lock-icon@2x.png" new file mode 100644 index 00000000..9430120b Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/lock-icon.imageset/lock-icon@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/man.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/man.imageset/Contents.json" new file mode 100644 index 00000000..06b8e477 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/man.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "man@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/man.imageset/man@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/man.imageset/man@2x.png" new file mode 100644 index 00000000..6112d16f Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/man.imageset/man@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/marker.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/marker.imageset/Contents.json" new file mode 100644 index 00000000..c867a302 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/marker.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "marker@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/marker.imageset/marker@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/marker.imageset/marker@2x.png" new file mode 100644 index 00000000..07124e09 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/marker.imageset/marker@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/mobile.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/mobile.imageset/Contents.json" new file mode 100644 index 00000000..68d99b2d --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/mobile.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "mobile@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/mobile.imageset/mobile@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/mobile.imageset/mobile@2x.png" new file mode 100644 index 00000000..df1dca0e Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/mobile.imageset/mobile@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/moon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/moon.imageset/Contents.json" new file mode 100644 index 00000000..3dacf3f2 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/moon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "moon@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/moon.imageset/moon@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/moon.imageset/moon@2x.png" new file mode 100644 index 00000000..a214494b Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/moon.imageset/moon@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/music.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/music.imageset/Contents.json" new file mode 100644 index 00000000..3c0d2190 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/music.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "music@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/music.imageset/music@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/music.imageset/music@2x.png" new file mode 100644 index 00000000..3aa6e0bc Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/music.imageset/music@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/next-calendar-month.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/next-calendar-month.imageset/Contents.json" new file mode 100644 index 00000000..9fcc5195 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/next-calendar-month.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "next-calendar-month@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/next-calendar-month.imageset/next-calendar-month@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/next-calendar-month.imageset/next-calendar-month@2x.png" new file mode 100644 index 00000000..de4ff834 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/next-calendar-month.imageset/next-calendar-month@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/options-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/options-icon.imageset/Contents.json" new file mode 100644 index 00000000..71f4a6d5 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/options-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "options-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/options-icon.imageset/options-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/options-icon.imageset/options-icon.png" new file mode 100644 index 00000000..90000732 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/options-icon.imageset/options-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/palette.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/palette.imageset/Contents.json" new file mode 100644 index 00000000..b4ae9e05 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/palette.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "palette@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/palette.imageset/palette@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/palette.imageset/palette@2x.png" new file mode 100644 index 00000000..4a905ccb Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/palette.imageset/palette@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/pen.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/pen.imageset/Contents.json" new file mode 100644 index 00000000..c2452650 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/pen.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "pen@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/pen.imageset/pen@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/pen.imageset/pen@2x.png" new file mode 100644 index 00000000..c13ff0e7 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/pen.imageset/pen@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/people.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/people.imageset/Contents.json" new file mode 100644 index 00000000..34d31f17 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/people.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "people@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/people.imageset/people@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/people.imageset/people@2x.png" new file mode 100644 index 00000000..6b3ef990 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/people.imageset/people@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/plus.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/plus.imageset/Contents.json" new file mode 100644 index 00000000..45fa1d76 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/plus.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "plus@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/plus.imageset/plus@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/plus.imageset/plus@2x.png" new file mode 100644 index 00000000..39c8679e Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/plus.imageset/plus@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/previous-calendar-month.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/previous-calendar-month.imageset/Contents.json" new file mode 100644 index 00000000..fbee9260 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/previous-calendar-month.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "previous-calendar-month@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/previous-calendar-month.imageset/previous-calendar-month@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/previous-calendar-month.imageset/previous-calendar-month@2x.png" new file mode 100644 index 00000000..aa3ed413 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/previous-calendar-month.imageset/previous-calendar-month@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reminders-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reminders-icon.imageset/Contents.json" new file mode 100644 index 00000000..41efc811 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reminders-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "reminders-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reminders-icon.imageset/reminders-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reminders-icon.imageset/reminders-icon.png" new file mode 100644 index 00000000..e3a74dc2 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reminders-icon.imageset/reminders-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/remove.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/remove.imageset/Contents.json" new file mode 100644 index 00000000..2cc1b917 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/remove.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "remove@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/remove.imageset/remove@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/remove.imageset/remove@2x.png" new file mode 100644 index 00000000..07f26128 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/remove.imageset/remove@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/restore-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/restore-icon.imageset/Contents.json" new file mode 100644 index 00000000..331fa2aa --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/restore-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "restore-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/restore-icon.imageset/restore-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/restore-icon.imageset/restore-icon.png" new file mode 100644 index 00000000..afa655c9 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/restore-icon.imageset/restore-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reward-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reward-icon.imageset/Contents.json" new file mode 100644 index 00000000..1b4164ce --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reward-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "reward-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reward-icon.imageset/reward-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reward-icon.imageset/reward-icon.png" new file mode 100644 index 00000000..ea356f75 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/reward-icon.imageset/reward-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/rewards-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/rewards-icon.imageset/Contents.json" new file mode 100644 index 00000000..a6f31417 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/rewards-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "rewards-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/rewards-icon.imageset/rewards-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/rewards-icon.imageset/rewards-icon.png" new file mode 100644 index 00000000..211bc194 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/rewards-icon.imageset/rewards-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/screen.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/screen.imageset/Contents.json" new file mode 100644 index 00000000..b1f9269e --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/screen.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "screen@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/screen.imageset/screen@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/screen.imageset/screen@2x.png" new file mode 100644 index 00000000..fba2fd7e Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/screen.imageset/screen@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/see-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/see-icon.imageset/Contents.json" new file mode 100644 index 00000000..4218e86c --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/see-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "see-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/see-icon.imageset/see-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/see-icon.imageset/see-icon.png" new file mode 100644 index 00000000..3ad26b85 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/see-icon.imageset/see-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/shake-phone.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/shake-phone.imageset/Contents.json" new file mode 100644 index 00000000..f973c82b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/shake-phone.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "shake-phone@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/shake-phone.imageset/shake-phone@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/shake-phone.imageset/shake-phone@2x.png" new file mode 100644 index 00000000..79a62b39 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/shake-phone.imageset/shake-phone@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ship.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ship.imageset/Contents.json" new file mode 100644 index 00000000..b2814138 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ship.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "ship@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ship.imageset/ship@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ship.imageset/ship@2x.png" new file mode 100644 index 00000000..5507adf1 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ship.imageset/ship@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/slimmer-woman.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/slimmer-woman.imageset/Contents.json" new file mode 100644 index 00000000..ccc9e1ba --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/slimmer-woman.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "slimmer-woman@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/slimmer-woman.imageset/slimmer-woman@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/slimmer-woman.imageset/slimmer-woman@2x.png" new file mode 100644 index 00000000..32fa858e Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/slimmer-woman.imageset/slimmer-woman@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/snowflake.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/snowflake.imageset/Contents.json" new file mode 100644 index 00000000..77376181 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/snowflake.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "snowflake@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/snowflake.imageset/snowflake@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/snowflake.imageset/snowflake@2x.png" new file mode 100644 index 00000000..f0ae89e5 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/snowflake.imageset/snowflake@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sounds-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sounds-icon.imageset/Contents.json" new file mode 100644 index 00000000..a4133949 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sounds-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "sounds-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sounds-icon.imageset/sounds-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sounds-icon.imageset/sounds-icon.png" new file mode 100644 index 00000000..1658a54c Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sounds-icon.imageset/sounds-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sport.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sport.imageset/Contents.json" new file mode 100644 index 00000000..83a3b631 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sport.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "sport@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sport.imageset/sport@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sport.imageset/sport@2x.png" new file mode 100644 index 00000000..c803a7c4 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sport.imageset/sport@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star-icon.imageset/Contents.json" new file mode 100644 index 00000000..a2231bef --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "star-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star-icon.imageset/star-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star-icon.imageset/star-icon.png" new file mode 100644 index 00000000..2e69f989 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star-icon.imageset/star-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star.imageset/Contents.json" new file mode 100644 index 00000000..04187b50 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "star@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star.imageset/star@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star.imageset/star@2x.png" new file mode 100644 index 00000000..2e69f989 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/star.imageset/star@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/stats.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/stats.imageset/Contents.json" new file mode 100644 index 00000000..185d30f7 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/stats.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "stats@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/stats.imageset/stats@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/stats.imageset/stats@2x.png" new file mode 100644 index 00000000..208b4329 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/stats.imageset/stats@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sun.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sun.imageset/Contents.json" new file mode 100644 index 00000000..d30f6336 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sun.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "sun@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sun.imageset/sun@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sun.imageset/sun@2x.png" new file mode 100644 index 00000000..8f789369 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/sun.imageset/sun@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tag.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tag.imageset/Contents.json" new file mode 100644 index 00000000..565f2801 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tag.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "tag@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tag.imageset/tag@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tag.imageset/tag@2x.png" new file mode 100644 index 00000000..c90ddddb Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tag.imageset/tag@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-larger.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-larger.imageset/Contents.json" new file mode 100644 index 00000000..7a5b987a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-larger.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "tap-larger@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-larger.imageset/tap-larger@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-larger.imageset/tap-larger@2x.png" new file mode 100644 index 00000000..5b71e55d Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-larger.imageset/tap-larger@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-smaller.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-smaller.imageset/Contents.json" new file mode 100644 index 00000000..511c242d --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-smaller.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "tap-smaller@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-smaller.imageset/tap-smaller@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-smaller.imageset/tap-smaller@2x.png" new file mode 100644 index 00000000..855e607d Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tap-smaller.imageset/tap-smaller@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/thicker-screen.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/thicker-screen.imageset/Contents.json" new file mode 100644 index 00000000..bf860659 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/thicker-screen.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "thicker-screen@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/thicker-screen.imageset/thicker-screen@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/thicker-screen.imageset/thicker-screen@2x.png" new file mode 100644 index 00000000..6479a740 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/thicker-screen.imageset/thicker-screen@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ticket.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ticket.imageset/Contents.json" new file mode 100644 index 00000000..c8053b88 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ticket.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "ticket@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ticket.imageset/ticket@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ticket.imageset/ticket@2x.png" new file mode 100644 index 00000000..30d02e6c Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/ticket.imageset/ticket@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/train.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/train.imageset/Contents.json" new file mode 100644 index 00000000..1e8d6ecb --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/train.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "train@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/train.imageset/train@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/train.imageset/train@2x.png" new file mode 100644 index 00000000..bd53a4e9 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/train.imageset/train@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tree.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tree.imageset/Contents.json" new file mode 100644 index 00000000..2367083c --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tree.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "tree@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tree.imageset/tree@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tree.imageset/tree@2x.png" new file mode 100644 index 00000000..0e4b9e23 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tree.imageset/tree@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/trophy.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/trophy.imageset/Contents.json" new file mode 100644 index 00000000..1ea853ac --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/trophy.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "trophy@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/trophy.imageset/trophy@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/trophy.imageset/trophy@2x.png" new file mode 100644 index 00000000..22cc57c6 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/trophy.imageset/trophy@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tshirt.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tshirt.imageset/Contents.json" new file mode 100644 index 00000000..60dfcc1b --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tshirt.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "tshirt@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tshirt.imageset/tshirt@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tshirt.imageset/tshirt@2x.png" new file mode 100644 index 00000000..ed5dff48 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tshirt.imageset/tshirt@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tv.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tv.imageset/Contents.json" new file mode 100644 index 00000000..357bad79 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tv.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "tv@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tv.imageset/tv@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tv.imageset/tv@2x.png" new file mode 100644 index 00000000..11b24e29 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/tv.imageset/tv@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/twitter.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/twitter.imageset/Contents.json" new file mode 100644 index 00000000..33ae9de0 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/twitter.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "twitter@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/twitter.imageset/twitter@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/twitter.imageset/twitter@2x.png" new file mode 100644 index 00000000..c3abbca0 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/twitter.imageset/twitter@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/umbrella.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/umbrella.imageset/Contents.json" new file mode 100644 index 00000000..05381055 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/umbrella.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "umbrella@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/umbrella.imageset/umbrella@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/umbrella.imageset/umbrella@2x.png" new file mode 100644 index 00000000..c958d9bc Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/umbrella.imageset/umbrella@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade-icon.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade-icon.imageset/Contents.json" new file mode 100644 index 00000000..76dc78d7 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade-icon.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x", + "filename" : "upgrade-icon.png" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade-icon.imageset/upgrade-icon.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade-icon.imageset/upgrade-icon.png" new file mode 100644 index 00000000..e28e4529 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade-icon.imageset/upgrade-icon.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade.imageset/Contents.json" new file mode 100644 index 00000000..ebf965ce --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "upgrade@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade.imageset/upgrade@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade.imageset/upgrade@2x.png" new file mode 100644 index 00000000..b6e5c807 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/upgrade.imageset/upgrade@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/watch.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/watch.imageset/Contents.json" new file mode 100644 index 00000000..f4750a55 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/watch.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "watch@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/watch.imageset/watch@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/watch.imageset/watch@2x.png" new file mode 100644 index 00000000..71222ebb Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/watch.imageset/watch@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/weather-lightning.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/weather-lightning.imageset/Contents.json" new file mode 100644 index 00000000..cef9654a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/weather-lightning.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "weather-lightning@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/weather-lightning.imageset/weather-lightning@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/weather-lightning.imageset/weather-lightning@2x.png" new file mode 100644 index 00000000..048e7f3c Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/weather-lightning.imageset/weather-lightning@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/windy.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/windy.imageset/Contents.json" new file mode 100644 index 00000000..dadbd99d --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/windy.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "windy@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/windy.imageset/windy@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/windy.imageset/windy@2x.png" new file mode 100644 index 00000000..a517262e Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/windy.imageset/windy@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/woman.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/woman.imageset/Contents.json" new file mode 100644 index 00000000..b9ff4e0c --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/woman.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "woman@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/woman.imageset/woman@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/woman.imageset/woman@2x.png" new file mode 100644 index 00000000..962d9dfa Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/woman.imageset/woman@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/wrench.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/wrench.imageset/Contents.json" new file mode 100644 index 00000000..3acbff96 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/wrench.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "wrench@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/wrench.imageset/wrench@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/wrench.imageset/wrench@2x.png" new file mode 100644 index 00000000..dbb90fab Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/wrench.imageset/wrench@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/yin-yang.imageset/Contents.json" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/yin-yang.imageset/Contents.json" new file mode 100644 index 00000000..a88e61d3 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/yin-yang.imageset/Contents.json" @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x", + "filename" : "yin-yang@2x.png" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/yin-yang.imageset/yin-yang@2x.png" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/yin-yang.imageset/yin-yang@2x.png" new file mode 100644 index 00000000..9ed3fff7 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Images.xcassets/yin-yang.imageset/yin-yang@2x.png" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Info.plist" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Info.plist" new file mode 100644 index 00000000..23e44170 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Info.plist" @@ -0,0 +1,52 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + cstlab.lzh.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + LSRequiresIPhoneOS + + UILaunchStoryboardName + LaunchScreen + UIMainStoryboardFile + Main + UIRequiredDeviceCapabilities + + armv7 + + UISupportedInterfaceOrientations + + UIInterfaceOrientationPortrait + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + UIAppFonts + + Raleway_Regular_Tracked.ttf + Raleway_Medium_Tracked.ttf + + UISupportedInterfaceOrientations~ipad + + UIInterfaceOrientationPortrait + UIInterfaceOrientationPortraitUpsideDown + UIInterfaceOrientationLandscapeLeft + UIInterfaceOrientationLandscapeRight + + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/InnerShadowView.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/InnerShadowView.h" new file mode 100644 index 00000000..ff361bed --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/InnerShadowView.h" @@ -0,0 +1,20 @@ +// +// InnerShadowView.h +// iHabit +// +// Created by 陆钟豪 on 14/12/8. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface InnerShadowView : UIView + +- (void)drawInnerShadowInContext:(CGContextRef)context + withPath:(CGPathRef)path + shadowColor:(CGColorRef)shadowColor + offset:(CGSize)offset + blurRadius:(CGFloat)blurRadius ; + + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/InnerShadowView.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/InnerShadowView.m" new file mode 100644 index 00000000..bf78ce8a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/InnerShadowView.m" @@ -0,0 +1,46 @@ +// +// InnerShadowView.m +// iHabit +// +// Created by 陆钟豪 on 14/12/8. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "InnerShadowView.h" + +@implementation InnerShadowView + +/* +// Only override drawRect: if you perform custom drawing. +// An empty implementation adversely affects performance during animation. +- (void)drawRect:(CGRect)rect { + // Drawing code +} +*/ +- (void)drawInnerShadowInContext:(CGContextRef)context + withPath:(CGPathRef)path + shadowColor:(CGColorRef)shadowColor + offset:(CGSize)offset + blurRadius:(CGFloat)blurRadius { + CGContextSaveGState(context); + + CGContextAddPath(context, path); + CGContextClip(context); + + CGColorRef opaqueShadowColor = CGColorCreateCopyWithAlpha(shadowColor, 1.0); + + CGContextSetAlpha(context, CGColorGetAlpha(shadowColor)); + CGContextBeginTransparencyLayer(context, NULL); + CGContextSetShadowWithColor(context, offset, blurRadius, opaqueShadowColor); + CGContextSetBlendMode(context, kCGBlendModeSourceOut); + CGContextSetFillColorWithColor(context, opaqueShadowColor); + CGContextAddPath(context, path); + CGContextFillPath(context); + CGContextEndTransparencyLayer(context); + + CGContextRestoreGState(context); + + CGColorRelease(opaqueShadowColor); +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/LineView.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/LineView.h" new file mode 100644 index 00000000..f4e926bf --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/LineView.h" @@ -0,0 +1,15 @@ +// +// LineView.h +// iHabit +// +// Created by xsdlr on 14/12/17. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface LineView : UIView + +@property UIColor *color; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/LineView.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/LineView.m" new file mode 100644 index 00000000..7d233543 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/LineView.m" @@ -0,0 +1,31 @@ +// +// LineView.m +// iHabit +// +// Created by xsdlr on 14/12/17. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "LineView.h" + +@implementation LineView + +-(instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + self.backgroundColor = UIColor.clearColor; + return self; +} + +-(void)drawRect:(CGRect)rect { + CGContextRef context = UIGraphicsGetCurrentContext(); + CGContextSetLineWidth(context, self.bounds.size.height); + NSLog(@"%f", self.bounds.size.height); + CGContextSetLineCap(context, kCGLineCapRound); + CGContextSetLineJoin(context, kCGLineJoinRound); + CGContextSetStrokeColorWithColor(context, self.color.CGColor); + CGContextMoveToPoint(context, self.bounds.origin.x + self.bounds.size.height / 2, self.bounds.origin.y + self.bounds.size.height / 2); + CGContextAddLineToPoint(context, self.bounds.size.width - self.bounds.size.height / 2, self.bounds.origin.y + self.bounds.size.height / 2); + CGContextStrokePath(context); +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/PeriodPickerController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/PeriodPickerController.h" new file mode 100644 index 00000000..2d1f7946 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/PeriodPickerController.h" @@ -0,0 +1,17 @@ +// +// PeriodPickerController.h +// iHabit +// +// Created by 陆钟豪 on 14/12/19. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "GridPickerViewController.h" +#import "Habit.h" + +@interface PeriodPickerController : GridPickerViewController + +@property (readonly) HabitPeriod selectedPeriod; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/PeriodPickerController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/PeriodPickerController.m" new file mode 100644 index 00000000..cd62aa48 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/PeriodPickerController.m" @@ -0,0 +1,37 @@ +// +// PeriodPickerController.m +// iHabit +// +// Created by 陆钟豪 on 14/12/19. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "PeriodPickerController.h" + +@implementation PeriodPickerController + +-(void)viewDidLoad { + [super viewDidLoad]; + NSArray *periodName = @[@"Day", @"Week", @"Month", @"Year"]; + for(NSInteger i = 0; i < [periodName count]; ++i) { + UIButton *timesButton = [UIButton buttonWithType:UIButtonTypeCustom]; + timesButton.frame = CGRectMake(0, 0, self.view.bounds.size.width / 2 / 4, self.view.bounds.size.height); + [timesButton setTitleColor:UIColor.blackColor forState:UIControlStateNormal]; + [timesButton setTitle:[periodName objectAtIndex:i] forState:UIControlStateNormal]; + timesButton.titleLabel.textColor = UIColor.blackColor; + timesButton.titleLabel.textAlignment = NSTextAlignmentCenter; + [timesButton addTarget:self action:@selector(selectCellView:) forControlEvents:UIControlEventTouchUpInside]; + [self addCellView:timesButton]; + } + self.numberOfCellInRow = 6; + self.horizontalSpace = 0; + self.verticalSpace = 0; + [self layoutCellViews]; + [self selectCellViewWithIndex:0]; +} + +-(HabitPeriod)selectedPeriod { + return self.selectedCellViewIndex; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Raleway_Medium_Tracked.ttf" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Raleway_Medium_Tracked.ttf" new file mode 100755 index 00000000..1a42fa16 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Raleway_Medium_Tracked.ttf" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Raleway_Regular_Tracked.ttf" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Raleway_Regular_Tracked.ttf" new file mode 100755 index 00000000..0a3c74d0 Binary files /dev/null and "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Raleway_Regular_Tracked.ttf" differ diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimeLineView.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimeLineView.h" new file mode 100644 index 00000000..7f15839e --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimeLineView.h" @@ -0,0 +1,17 @@ +// +// LineView.h +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface TimeLineView : UIView + +@property UIColor *color; +@property NSString *tip; +@property float progressRatio; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimeLineView.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimeLineView.m" new file mode 100644 index 00000000..3e17145e --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimeLineView.m" @@ -0,0 +1,66 @@ +// +// LineView.m +// iHabit +// +// Created by 陆钟豪 on 14/12/3. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "TimeLineView.h" + +@implementation TimeLineView + +-(void)drawRect:(CGRect)rect { + CGContextRef context = UIGraphicsGetCurrentContext(); + const CGFloat beginX = 0.0f, maxEndX = 174.0f, minEndX = beginX + 20; + CGFloat centerY = rect.origin.y + (rect.size.height / 2); + const CGFloat lineWidth = 4.0f; + CGContextSetLineWidth(context, lineWidth); + CGContextSetLineCap(context, kCGLineCapRound); + CGContextSetLineJoin(context, kCGLineJoinRound); + CGContextSetStrokeColorWithColor(context, self.color.CGColor); + + CGFloat tipPostionX; + if(self.progressRatio < 1.0) + { + CGFloat currentEndX = minEndX + (maxEndX - minEndX) * self.progressRatio; + CGContextMoveToPoint(context, beginX + lineWidth / 2, centerY); + CGContextAddLineToPoint(context, currentEndX - lineWidth / 2, centerY); + CGContextStrokePath(context); + tipPostionX = currentEndX + 8.5; + } + else if(self.progressRatio == 1.0) + { + CGContextMoveToPoint(context, beginX + lineWidth / 2, centerY); + CGContextAddLineToPoint(context, maxEndX - lineWidth / 2, centerY); + + CGContextMoveToPoint(context, maxEndX - lineWidth / 2 - 6, centerY - 6); + CGContextAddLineToPoint(context, maxEndX - lineWidth / 2, centerY); + CGContextAddLineToPoint(context, maxEndX - lineWidth / 2 - 6, centerY + 6); + CGContextStrokePath(context); + + tipPostionX = maxEndX + 8.5; + } + else + { + CGContextMoveToPoint(context, beginX + lineWidth / 2, centerY); + CGContextAddLineToPoint(context, maxEndX - lineWidth / 2, centerY); + + CGContextMoveToPoint(context, maxEndX - lineWidth / 2 - 6, centerY - 6); + CGContextAddLineToPoint(context, maxEndX - lineWidth / 2, centerY); + CGContextAddLineToPoint(context, maxEndX - lineWidth / 2 - 6, centerY + 6); + + CGContextMoveToPoint(context, maxEndX - lineWidth / 2 + 1, centerY - 6); + CGContextAddLineToPoint(context, maxEndX - lineWidth / 2 + 7, centerY); + CGContextAddLineToPoint(context, maxEndX - lineWidth / 2 + 1, centerY + 6); + CGContextStrokePath(context); + + tipPostionX = maxEndX + 7 + 8.5; + } + + UIFont *font = [UIFont fontWithName:@"Raleway-Tracked" size:16.67]; + [self.tip drawAtPoint:CGPointMake(tipPostionX, centerY - 12) withAttributes:@{NSFontAttributeName:font}]; + +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimesPickerController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimesPickerController.h" new file mode 100644 index 00000000..7137617d --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimesPickerController.h" @@ -0,0 +1,16 @@ +// +// TimesPickerController.h +// iHabit +// +// Created by 陆钟豪 on 14/12/19. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "GridPickerViewController.h" + +@interface TimesPickerController : GridPickerViewController + +@property (readonly) NSInteger selectedTimes; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimesPickerController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimesPickerController.m" new file mode 100644 index 00000000..268ce050 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/TimesPickerController.m" @@ -0,0 +1,39 @@ +// +// TimesPickerController.m +// iHabit +// +// Created by 陆钟豪 on 14/12/19. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "TimesPickerController.h" + +@implementation TimesPickerController + +-(void)viewDidLoad { + [super viewDidLoad]; + NSLog(@"self.view.bounds.size.width:%f", self.view.bounds.size.width); + for(NSInteger i = 1; i <= 6; ++i) { + UIButton *timesButton = [UIButton buttonWithType:UIButtonTypeCustom]; + timesButton.frame = CGRectMake(0, 0, self.view.bounds.size.width / 2 / 6, self.view.bounds.size.height); // FIXME timesButton.frame = CGRectMake(0, 0, self.view.bounds.size.width / 6, self.view.bounds.size.height); + [timesButton setTitleColor:UIColor.blackColor forState:UIControlStateNormal]; + [timesButton setTitle:[NSString stringWithFormat:@"%ld", i] forState:UIControlStateNormal]; + timesButton.titleLabel.textColor = UIColor.blackColor; + timesButton.titleLabel.textAlignment = NSTextAlignmentCenter; + [timesButton addTarget:self action:@selector(selectCellView:) forControlEvents:UIControlEventTouchUpInside]; + + [self addCellView:timesButton]; + } + self.numberOfCellInRow = 6; + self.horizontalSpace = 0; + self.verticalSpace = 0; + [self layoutCellViews]; + [self selectCellViewWithIndex:0]; +} + +-(NSInteger)selectedTimes { + NSInteger selectedCellViewIndex = self.selectedCellViewIndex; + return selectedCellViewIndex + 1; +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Util.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Util.h" new file mode 100644 index 00000000..9061ee72 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Util.h" @@ -0,0 +1,23 @@ +// +// Util.h +// iHabit +// +// Created by 陆钟豪 on 14/12/22. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import + +@interface ActionBlock : UIViewController + +-(instancetype)initWith:(void (^)(id sender))block; +-(void)action:(id) sender; + +@end + +@interface Util : NSObject + ++(id)blockActionWithBlock:(void (^)(id sender))block; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Util.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Util.m" new file mode 100644 index 00000000..5c9a81e7 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/Util.m" @@ -0,0 +1,33 @@ +// +// Util.m +// iHabit +// +// Created by 陆钟豪 on 14/12/22. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "Util.h" + +@implementation ActionBlock { + void (^_block)(id sender) ; +} + +-(instancetype)initWith:(void (^)(id sender))block { + self = [super init]; + _block = block; + return self; +} + +-(void)action:(id) sender{ + _block(sender); +}; + +@end + +@implementation Util + ++(id)blockActionWithBlock:(void (^)(id sender))block { + return [[ActionBlock alloc] initWith:block]; +}; + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/ViewController.h" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/ViewController.h" new file mode 100644 index 00000000..339cf908 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/ViewController.h" @@ -0,0 +1,16 @@ +// +// ViewController.h +// iHabit +// +// Created by 陆钟豪 on 14/12/1. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import + +@interface ViewController : UIViewController + + + +@end + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/ViewController.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/ViewController.m" new file mode 100644 index 00000000..5f3d140a --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/ViewController.m" @@ -0,0 +1,27 @@ +// +// ViewController.m +// iHabit +// +// Created by 陆钟豪 on 14/12/1. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import "ViewController.h" + +@interface ViewController () + +@end + +@implementation ViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view, typically from a nib. +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +@end diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/iHabitDB.xcdatamodeld/iHabitDB.xcdatamodel/contents" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/iHabitDB.xcdatamodeld/iHabitDB.xcdatamodel/contents" new file mode 100644 index 00000000..10fb647f --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/iHabitDB.xcdatamodeld/iHabitDB.xcdatamodel/contents" @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/main.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/main.m" new file mode 100644 index 00000000..31d82037 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabit/main.m" @@ -0,0 +1,16 @@ +// +// main.m +// iHabit +// +// Created by 陆钟豪 on 14/12/1. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import "AppDelegate.h" + +int main(int argc, char * argv[]) { + @autoreleasepool { + return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])); + } +} diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabitTests/Info.plist" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabitTests/Info.plist" new file mode 100644 index 00000000..dd0bff1c --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabitTests/Info.plist" @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + cstlab.lzh.$(PRODUCT_NAME:rfc1034identifier) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git "a/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabitTests/iHabitTests.m" "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabitTests/iHabitTests.m" new file mode 100644 index 00000000..1777aef9 --- /dev/null +++ "b/yxb144325061\351\231\206\351\222\237\350\261\252/iHabit/iHabitTests/iHabitTests.m" @@ -0,0 +1,48 @@ +// +// iHabitTests.m +// iHabitTests +// +// Created by 陆钟豪 on 14/12/1. +// Copyright (c) 2014年 lzh. All rights reserved. +// + +#import +#import +#import +#import "Habit.h" + +@interface iHabitTests : XCTestCase + +@end + +@implementation iHabitTests + +- (void)setUp { + [super setUp]; + // Put setup code here. This method is called before the invocation of each test method in the class. + [MagicalRecord setupCoreDataStackWithStoreNamed: @"iHabitDB.sqlite"]; +} + +- (void)tearDown { + // Put teardown code here. This method is called after the invocation of each test method in the class. + [MagicalRecord cleanUp]; + [super tearDown]; +} + +- (void)testExample { + // This is an example of a functional test case. + Habit *newHabit = [Habit MR_createEntity]; + newHabit.title = @"testtitle"; + [[NSManagedObjectContext MR_defaultContext]MR_saveToPersistentStoreAndWait]; + Habit *habit = [Habit MR_findFirst]; + XCTAssert([habit.title isEqualToString:@"testtitle"], @"Pass"); +} + +- (void)testPerformanceExample { + // This is an example of a performance test case. + [self measureBlock:^{ + // Put the code you want to measure the time of here. + }]; +} + +@end