From 821a5dbb77bba8a6fcfffe438027b342a782df0e Mon Sep 17 00:00:00 2001 From: wu736139669 Date: Thu, 2 Apr 2015 08:39:39 +0800 Subject: [PATCH] new --- Ash_AWord.xcodeproj/project.pbxproj | 152 ++++++++++ .../xcdebugger/Breakpoints_v2.xcbkptlist | 264 +++++++++++++++++- Ash_AWord/Config/AWordDefault.h | 32 +++ Ash_AWord/Config/AWordDefault.m | 64 +++++ Ash_AWord/Config/AWordUser.h | 20 ++ Ash_AWord/Config/AWordUser.m | 53 ++++ Ash_AWord/Config/Common.h | 14 +- Ash_AWord/Info.plist | 8 + Ash_AWord/PrefixHeader.pch | 8 + Ash_AWord/Resource/btn_bad@2x.png | Bin 0 -> 13734 bytes Ash_AWord/Resource/btn_bad_clicked@2x.png | Bin 0 -> 13682 bytes Ash_AWord/Resource/btn_good@2x.png | Bin 0 -> 13699 bytes Ash_AWord/Resource/btn_good_clicked@2x.png | Bin 0 -> 13648 bytes Ash_AWord/Resource/btn_share@2x.png | Bin 0 -> 13327 bytes Ash_AWord/Resource/btn_share_clicked@2x.png | Bin 0 -> 13288 bytes .../Resource/mine-setting-icon-click@2x.png | Bin 0 -> 2220 bytes Ash_AWord/Resource/mine-setting-icon@2x.png | Bin 0 -> 1680 bytes .../Resource/navigationButtonPublish@2x.png | Bin 0 -> 1513 bytes .../navigationButtonPublishClick@2x.png | Bin 0 -> 1917 bytes .../Resource/navigationButtonRefresh@2x.png | Bin 0 -> 4358 bytes .../navigationButtonRefreshClick@2x.png | Bin 0 -> 4765 bytes Ash_AWord/Resource/setup-head-default@2x.png | Bin 0 -> 3514 bytes Ash_AWord/Utility/Network/PropertyEntity.m | 12 +- Ash_AWord/Utility/Network/RequireEngine.m | 6 +- Ash_AWord/Utility/Tool/Ash_UIUtil.h | 8 +- Ash_AWord/Utility/Tool/Ash_UIUtil.m | 162 ++++++++++- .../UIPlaceHolderTextView.h | 25 ++ .../UIPlaceHolderTextView.m | 87 ++++++ .../Common/BaseRefreshViewController.h | 2 +- .../Common/BaseRefreshViewController.m | 2 +- .../Common/BaseRefreshViewController.xib | 2 +- .../Login/LoginViewController.h | 3 + .../Login/LoginViewController.m | 96 ++++++- .../Login/LoginViewController.xib | 23 +- .../ViewControllers/Main/MainViewController.m | 3 + .../Main/MessageViewController.m | 11 +- .../ViewControllers/Main/MyViewController.m | 91 +++--- .../ViewControllers/Main/MyViewController.xib | 2 +- .../ViewControllers/Main/NoteViewController.h | 4 +- .../ViewControllers/Main/NoteViewController.m | 140 +++++++++- .../Main/NoteViewController.xib | 25 +- .../ViewControllers/My/SetUpViewController.h | 14 + .../ViewControllers/My/SetUpViewController.m | 138 +++++++++ .../My/SetUpViewController.xib | 34 +++ .../Note/NotePublishViewController.h | 18 ++ .../Note/NotePublishViewController.m | 102 +++++++ .../Note/NotePublishViewController.xib | 76 +++++ .../ViewModels/Note/NotePublishViewModel.h | 14 + .../ViewModels/Note/NotePublishViewModel.m | 29 ++ Ash_AWord/ViewModels/Note/NoteViewModel.h | 28 ++ Ash_AWord/ViewModels/Note/NoteViewModel.m | 60 ++++ Ash_AWord/Views/Note/NoteTableViewCell.h | 29 ++ Ash_AWord/Views/Note/NoteTableViewCell.m | 69 +++++ Ash_AWord/Views/Note/NoteTableViewCell.xib | 155 ++++++++++ 54 files changed, 1997 insertions(+), 88 deletions(-) create mode 100644 Ash_AWord/Config/AWordDefault.h create mode 100644 Ash_AWord/Config/AWordDefault.m create mode 100644 Ash_AWord/Config/AWordUser.h create mode 100644 Ash_AWord/Config/AWordUser.m create mode 100644 Ash_AWord/Resource/btn_bad@2x.png create mode 100644 Ash_AWord/Resource/btn_bad_clicked@2x.png create mode 100644 Ash_AWord/Resource/btn_good@2x.png create mode 100644 Ash_AWord/Resource/btn_good_clicked@2x.png create mode 100644 Ash_AWord/Resource/btn_share@2x.png create mode 100644 Ash_AWord/Resource/btn_share_clicked@2x.png create mode 100644 Ash_AWord/Resource/mine-setting-icon-click@2x.png create mode 100644 Ash_AWord/Resource/mine-setting-icon@2x.png create mode 100644 Ash_AWord/Resource/navigationButtonPublish@2x.png create mode 100644 Ash_AWord/Resource/navigationButtonPublishClick@2x.png create mode 100644 Ash_AWord/Resource/navigationButtonRefresh@2x.png create mode 100644 Ash_AWord/Resource/navigationButtonRefreshClick@2x.png create mode 100644 Ash_AWord/Resource/setup-head-default@2x.png create mode 100644 Ash_AWord/Vender/UIPlaceHolderTextView/UIPlaceHolderTextView.h create mode 100644 Ash_AWord/Vender/UIPlaceHolderTextView/UIPlaceHolderTextView.m create mode 100644 Ash_AWord/ViewControllers/My/SetUpViewController.h create mode 100644 Ash_AWord/ViewControllers/My/SetUpViewController.m create mode 100644 Ash_AWord/ViewControllers/My/SetUpViewController.xib create mode 100644 Ash_AWord/ViewControllers/Note/NotePublishViewController.h create mode 100644 Ash_AWord/ViewControllers/Note/NotePublishViewController.m create mode 100644 Ash_AWord/ViewControllers/Note/NotePublishViewController.xib create mode 100644 Ash_AWord/ViewModels/Note/NotePublishViewModel.h create mode 100644 Ash_AWord/ViewModels/Note/NotePublishViewModel.m create mode 100644 Ash_AWord/ViewModels/Note/NoteViewModel.h create mode 100644 Ash_AWord/ViewModels/Note/NoteViewModel.m create mode 100644 Ash_AWord/Views/Note/NoteTableViewCell.h create mode 100644 Ash_AWord/Views/Note/NoteTableViewCell.m create mode 100644 Ash_AWord/Views/Note/NoteTableViewCell.xib diff --git a/Ash_AWord.xcodeproj/project.pbxproj b/Ash_AWord.xcodeproj/project.pbxproj index e0899cf..ce61ce6 100644 --- a/Ash_AWord.xcodeproj/project.pbxproj +++ b/Ash_AWord.xcodeproj/project.pbxproj @@ -34,6 +34,30 @@ A955109B1AC39E6A0006D16F /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = A95510991AC39E6A0006D16F /* Main.storyboard */; }; A955109D1AC39E6A0006D16F /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A955109C1AC39E6A0006D16F /* Images.xcassets */; }; A95510A01AC39E6A0006D16F /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = A955109E1AC39E6A0006D16F /* LaunchScreen.xib */; }; + A9617A4F1ACC0D0F0024AE4A /* NoteViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = A9617A4E1ACC0D0F0024AE4A /* NoteViewModel.m */; }; + A9617A541ACC27860024AE4A /* SetUpViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A9617A521ACC27860024AE4A /* SetUpViewController.m */; }; + A9617A551ACC27860024AE4A /* SetUpViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A9617A531ACC27860024AE4A /* SetUpViewController.xib */; }; + A9617A581ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */; }; + A9617A591ACC2EBC0024AE4A /* mine-setting-icon@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */; }; + A97559A01ACB88FE004ADA42 /* AWordDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = A975599F1ACB88FE004ADA42 /* AWordDefault.m */; }; + A97559A31ACB8CE0004ADA42 /* AWordUser.m in Sources */ = {isa = PBXBuildFile; fileRef = A97559A21ACB8CE0004ADA42 /* AWordUser.m */; }; + A97559A51ACB9748004ADA42 /* setup-head-default@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559A41ACB9748004ADA42 /* setup-head-default@2x.png */; }; + A97559A81ACB9DE4004ADA42 /* navigationButtonPublish@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559A61ACB9DE4004ADA42 /* navigationButtonPublish@2x.png */; }; + A97559A91ACB9DE4004ADA42 /* navigationButtonPublishClick@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559A71ACB9DE4004ADA42 /* navigationButtonPublishClick@2x.png */; }; + A97559AC1ACB9DF0004ADA42 /* navigationButtonRefresh@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559AA1ACB9DF0004ADA42 /* navigationButtonRefresh@2x.png */; }; + A97559AD1ACB9DF0004ADA42 /* navigationButtonRefreshClick@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559AB1ACB9DF0004ADA42 /* navigationButtonRefreshClick@2x.png */; }; + A97559B21ACBC683004ADA42 /* NotePublishViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = A97559B01ACBC683004ADA42 /* NotePublishViewController.m */; }; + A97559B31ACBC683004ADA42 /* NotePublishViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = A97559B11ACBC683004ADA42 /* NotePublishViewController.xib */; }; + A97559B71ACBD99E004ADA42 /* UIPlaceHolderTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = A97559B61ACBD99E004ADA42 /* UIPlaceHolderTextView.m */; }; + A97559BF1ACBE6C6004ADA42 /* NotePublishViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = A97559BE1ACBE6C6004ADA42 /* NotePublishViewModel.m */; }; + A97559C41ACBEE99004ADA42 /* NoteTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A97559C21ACBEE99004ADA42 /* NoteTableViewCell.m */; }; + A97559C51ACBEE99004ADA42 /* NoteTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = A97559C31ACBEE99004ADA42 /* NoteTableViewCell.xib */; }; + A97559CC1ACBF0BC004ADA42 /* btn_bad_clicked@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559C61ACBF0BC004ADA42 /* btn_bad_clicked@2x.png */; }; + A97559CD1ACBF0BC004ADA42 /* btn_bad@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559C71ACBF0BC004ADA42 /* btn_bad@2x.png */; }; + A97559CE1ACBF0BC004ADA42 /* btn_good_clicked@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559C81ACBF0BC004ADA42 /* btn_good_clicked@2x.png */; }; + A97559CF1ACBF0BC004ADA42 /* btn_good@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559C91ACBF0BC004ADA42 /* btn_good@2x.png */; }; + A97559D01ACBF0BC004ADA42 /* btn_share_clicked@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559CA1ACBF0BC004ADA42 /* btn_share_clicked@2x.png */; }; + A97559D11ACBF0BC004ADA42 /* btn_share@2x.png in Resources */ = {isa = PBXBuildFile; fileRef = A97559CB1ACBF0BC004ADA42 /* btn_share@2x.png */; }; A97C54CD1AC8F10F0038818A /* BaseViewModel.m in Sources */ = {isa = PBXBuildFile; fileRef = A97C54BD1AC8F10F0038818A /* BaseViewModel.m */; }; A97C54CF1AC8F10F0038818A /* NSString+HXAddtions.m in Sources */ = {isa = PBXBuildFile; fileRef = A97C54C11AC8F10F0038818A /* NSString+HXAddtions.m */; }; A97C54D01AC8F10F0038818A /* PropertyEntity.m in Sources */ = {isa = PBXBuildFile; fileRef = A97C54C31AC8F10F0038818A /* PropertyEntity.m */; }; @@ -130,6 +154,38 @@ A955109F1AC39E6A0006D16F /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; A95510AA1AC39E6A0006D16F /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; A95510AB1AC39E6A0006D16F /* Ash_AWordTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = Ash_AWordTests.m; sourceTree = ""; }; + A9617A4D1ACC0D0F0024AE4A /* NoteViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoteViewModel.h; sourceTree = ""; }; + A9617A4E1ACC0D0F0024AE4A /* NoteViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NoteViewModel.m; sourceTree = ""; }; + A9617A511ACC27860024AE4A /* SetUpViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SetUpViewController.h; sourceTree = ""; }; + A9617A521ACC27860024AE4A /* SetUpViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SetUpViewController.m; sourceTree = ""; }; + A9617A531ACC27860024AE4A /* SetUpViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SetUpViewController.xib; sourceTree = ""; }; + A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mine-setting-icon-click@2x.png"; sourceTree = ""; }; + A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "mine-setting-icon@2x.png"; sourceTree = ""; }; + A975599E1ACB88FE004ADA42 /* AWordDefault.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWordDefault.h; sourceTree = ""; }; + A975599F1ACB88FE004ADA42 /* AWordDefault.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWordDefault.m; sourceTree = ""; }; + A97559A11ACB8CE0004ADA42 /* AWordUser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AWordUser.h; sourceTree = ""; }; + A97559A21ACB8CE0004ADA42 /* AWordUser.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AWordUser.m; sourceTree = ""; }; + A97559A41ACB9748004ADA42 /* setup-head-default@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "setup-head-default@2x.png"; sourceTree = ""; }; + A97559A61ACB9DE4004ADA42 /* navigationButtonPublish@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "navigationButtonPublish@2x.png"; sourceTree = ""; }; + A97559A71ACB9DE4004ADA42 /* navigationButtonPublishClick@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "navigationButtonPublishClick@2x.png"; sourceTree = ""; }; + A97559AA1ACB9DF0004ADA42 /* navigationButtonRefresh@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "navigationButtonRefresh@2x.png"; sourceTree = ""; }; + A97559AB1ACB9DF0004ADA42 /* navigationButtonRefreshClick@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "navigationButtonRefreshClick@2x.png"; sourceTree = ""; }; + A97559AF1ACBC683004ADA42 /* NotePublishViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotePublishViewController.h; sourceTree = ""; }; + A97559B01ACBC683004ADA42 /* NotePublishViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NotePublishViewController.m; sourceTree = ""; }; + A97559B11ACBC683004ADA42 /* NotePublishViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NotePublishViewController.xib; sourceTree = ""; }; + A97559B51ACBD99E004ADA42 /* UIPlaceHolderTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = UIPlaceHolderTextView.h; sourceTree = ""; }; + A97559B61ACBD99E004ADA42 /* UIPlaceHolderTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = UIPlaceHolderTextView.m; sourceTree = ""; }; + A97559BD1ACBE6C6004ADA42 /* NotePublishViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NotePublishViewModel.h; sourceTree = ""; }; + A97559BE1ACBE6C6004ADA42 /* NotePublishViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NotePublishViewModel.m; sourceTree = ""; }; + A97559C11ACBEE99004ADA42 /* NoteTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NoteTableViewCell.h; sourceTree = ""; }; + A97559C21ACBEE99004ADA42 /* NoteTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NoteTableViewCell.m; sourceTree = ""; }; + A97559C31ACBEE99004ADA42 /* NoteTableViewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = NoteTableViewCell.xib; sourceTree = ""; }; + A97559C61ACBF0BC004ADA42 /* btn_bad_clicked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn_bad_clicked@2x.png"; sourceTree = ""; }; + A97559C71ACBF0BC004ADA42 /* btn_bad@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn_bad@2x.png"; sourceTree = ""; }; + A97559C81ACBF0BC004ADA42 /* btn_good_clicked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn_good_clicked@2x.png"; sourceTree = ""; }; + A97559C91ACBF0BC004ADA42 /* btn_good@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn_good@2x.png"; sourceTree = ""; }; + A97559CA1ACBF0BC004ADA42 /* btn_share_clicked@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn_share_clicked@2x.png"; sourceTree = ""; }; + A97559CB1ACBF0BC004ADA42 /* btn_share@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "btn_share@2x.png"; sourceTree = ""; }; A97C54BC1AC8F10F0038818A /* BaseViewModel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BaseViewModel.h; sourceTree = ""; }; A97C54BD1AC8F10F0038818A /* BaseViewModel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BaseViewModel.m; sourceTree = ""; }; A97C54C01AC8F10F0038818A /* NSString+HXAddtions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+HXAddtions.h"; sourceTree = ""; }; @@ -323,9 +379,61 @@ name = "Supporting Files"; sourceTree = ""; }; + A9617A501ACC274C0024AE4A /* My */ = { + isa = PBXGroup; + children = ( + A9617A511ACC27860024AE4A /* SetUpViewController.h */, + A9617A521ACC27860024AE4A /* SetUpViewController.m */, + A9617A531ACC27860024AE4A /* SetUpViewController.xib */, + ); + path = My; + sourceTree = ""; + }; + A97559AE1ACBC615004ADA42 /* Note */ = { + isa = PBXGroup; + children = ( + A97559AF1ACBC683004ADA42 /* NotePublishViewController.h */, + A97559B01ACBC683004ADA42 /* NotePublishViewController.m */, + A97559B11ACBC683004ADA42 /* NotePublishViewController.xib */, + ); + path = Note; + sourceTree = ""; + }; + A97559B41ACBD99E004ADA42 /* UIPlaceHolderTextView */ = { + isa = PBXGroup; + children = ( + A97559B51ACBD99E004ADA42 /* UIPlaceHolderTextView.h */, + A97559B61ACBD99E004ADA42 /* UIPlaceHolderTextView.m */, + ); + path = UIPlaceHolderTextView; + sourceTree = ""; + }; + A97559BC1ACBE6B7004ADA42 /* Note */ = { + isa = PBXGroup; + children = ( + A97559BD1ACBE6C6004ADA42 /* NotePublishViewModel.h */, + A97559BE1ACBE6C6004ADA42 /* NotePublishViewModel.m */, + A9617A4D1ACC0D0F0024AE4A /* NoteViewModel.h */, + A9617A4E1ACC0D0F0024AE4A /* NoteViewModel.m */, + ); + path = Note; + sourceTree = ""; + }; + A97559C01ACBEE71004ADA42 /* Note */ = { + isa = PBXGroup; + children = ( + A97559C11ACBEE99004ADA42 /* NoteTableViewCell.h */, + A97559C21ACBEE99004ADA42 /* NoteTableViewCell.m */, + A97559C31ACBEE99004ADA42 /* NoteTableViewCell.xib */, + ); + path = Note; + sourceTree = ""; + }; A97C54B71AC8F0370038818A /* ViewControllers */ = { isa = PBXGroup; children = ( + A9617A501ACC274C0024AE4A /* My */, + A97559AE1ACBC615004ADA42 /* Note */, A97DBE2F1ACAE0F100705682 /* Login */, A98F98671ACA2F27007C4594 /* Common */, A9FAD41E1AC92293007ADC10 /* Main */, @@ -336,6 +444,7 @@ A97C54B81AC8F0370038818A /* ViewModels */ = { isa = PBXGroup; children = ( + A97559BC1ACBE6B7004ADA42 /* Note */, A9FAD4331AC925AC007ADC10 /* LoginViewModel.h */, A9FAD4341AC925AC007ADC10 /* LoginViewModel.m */, ); @@ -345,6 +454,7 @@ A97C54B91AC8F0370038818A /* Views */ = { isa = PBXGroup; children = ( + A97559C01ACBEE71004ADA42 /* Note */, ); path = Views; sourceTree = ""; @@ -391,6 +501,10 @@ isa = PBXGroup; children = ( A97C54D61AC8FB6C0038818A /* Common.h */, + A975599E1ACB88FE004ADA42 /* AWordDefault.h */, + A975599F1ACB88FE004ADA42 /* AWordDefault.m */, + A97559A11ACB8CE0004ADA42 /* AWordUser.h */, + A97559A21ACB8CE0004ADA42 /* AWordUser.m */, ); path = Config; sourceTree = ""; @@ -398,6 +512,7 @@ A97C54D91AC9014D0038818A /* Vender */ = { isa = PBXGroup; children = ( + A97559B41ACBD99E004ADA42 /* UIPlaceHolderTextView */, A98F98461ACA29B5007C4594 /* UMSocial_Sdk_Extra_Frameworks */, A9B4E39B1AC9908E00A1DBDF /* UMAnalytics_Sdk_3.4.6 */, A97C54E31AC933AD0038818A /* UMSocial_Sdk_4.2.1 */, @@ -429,6 +544,19 @@ A97C54E21AC91FD70038818A /* Resource */ = { isa = PBXGroup; children = ( + A9617A561ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png */, + A9617A571ACC2EBC0024AE4A /* mine-setting-icon@2x.png */, + A97559C61ACBF0BC004ADA42 /* btn_bad_clicked@2x.png */, + A97559C71ACBF0BC004ADA42 /* btn_bad@2x.png */, + A97559C81ACBF0BC004ADA42 /* btn_good_clicked@2x.png */, + A97559C91ACBF0BC004ADA42 /* btn_good@2x.png */, + A97559CA1ACBF0BC004ADA42 /* btn_share_clicked@2x.png */, + A97559CB1ACBF0BC004ADA42 /* btn_share@2x.png */, + A97559AA1ACB9DF0004ADA42 /* navigationButtonRefresh@2x.png */, + A97559AB1ACB9DF0004ADA42 /* navigationButtonRefreshClick@2x.png */, + A97559A61ACB9DE4004ADA42 /* navigationButtonPublish@2x.png */, + A97559A71ACB9DE4004ADA42 /* navigationButtonPublishClick@2x.png */, + A97559A41ACB9748004ADA42 /* setup-head-default@2x.png */, A97DBE4D1ACAED4900705682 /* camera-close-select@2x.png */, A97DBE471ACAE7F600705682 /* smalliconWeixin@2x.png */, A97DBE451ACAE7B500705682 /* iconWeixin@2x.png */, @@ -682,17 +810,23 @@ A9FAD4321AC923FC007ADC10 /* MyViewController.xib in Resources */, A93441FF1ACA919F00A6B233 /* tabbarVoice@2x.png in Resources */, A93441FA1ACA919500A6B233 /* tabbarQuotation-dark@2x.png in Resources */, + A97559D01ACBF0BC004ADA42 /* btn_share_clicked@2x.png in Resources */, A955109B1AC39E6A0006D16F /* Main.storyboard in Resources */, + A97559A51ACB9748004ADA42 /* setup-head-default@2x.png in Resources */, A97DBE3F1ACAE29E00705682 /* Icon.png in Resources */, A97DBE3D1ACAE29E00705682 /* Icon-Small.png in Resources */, A93441ED1ACA8C8F00A6B233 /* defaultUserIcon.png in Resources */, + A97559CF1ACBF0BC004ADA42 /* btn_good@2x.png in Resources */, + A97559CC1ACBF0BC004ADA42 /* btn_bad_clicked@2x.png in Resources */, A97DBE461ACAE7B500705682 /* iconWeixin@2x.png in Resources */, A97C55071AC933AD0038818A /* UMSShareListController.xib in Resources */, A93441EE1ACA8C8F00A6B233 /* defaultUserIcon@2x.png in Resources */, + A97559AC1ACB9DF0004ADA42 /* navigationButtonRefresh@2x.png in Resources */, A97C54FE1AC933AD0038818A /* UMSocialLocalizable.strings in Resources */, A93441E91ACA8AD200A6B233 /* Profile_filter_ImageIcon@2x.png in Resources */, A97C55041AC933AD0038818A /* UMShareEditViewControlleriPad.xib in Resources */, A98F98541ACA29B5007C4594 /* TencentOpenApi_IOS_Bundle.bundle in Resources */, + A9617A591ACC2EBC0024AE4A /* mine-setting-icon@2x.png in Resources */, A95510A01AC39E6A0006D16F /* LaunchScreen.xib in Resources */, A93442041ACA981D00A6B233 /* Default@2x.png in Resources */, A97DBE401ACAE29E00705682 /* Icon@2x.png in Resources */, @@ -704,17 +838,27 @@ A97DBE4C1ACAEBE300705682 /* first-login-sina@2x.png in Resources */, A9FAD4281AC922BE007ADC10 /* NoteViewController.xib in Resources */, A93441E61ACA8AC400A6B233 /* Profile_filter_contentIconClick@2x.png in Resources */, + A97559C51ACBEE99004ADA42 /* NoteTableViewCell.xib in Resources */, + A9617A551ACC27860024AE4A /* SetUpViewController.xib in Resources */, + A97559D11ACBF0BC004ADA42 /* btn_share@2x.png in Resources */, A93441E11ACA89AA00A6B233 /* Profile_filter_voiceIcon@2x.png in Resources */, A97C55031AC933AD0038818A /* UMShareEditViewController.xib in Resources */, A97DBE4E1ACAED4900705682 /* camera-close-select@2x.png in Resources */, + A97559A91ACB9DE4004ADA42 /* navigationButtonPublishClick@2x.png in Resources */, A93441E21ACA89AA00A6B233 /* Profile_filter_voiceIconClick@2x.png in Resources */, + A97559A81ACB9DE4004ADA42 /* navigationButtonPublish@2x.png in Resources */, + A97559CE1ACBF0BC004ADA42 /* btn_good_clicked@2x.png in Resources */, A97DBE3C1ACAE29E00705682 /* Icon-Small-50@2x.png in Resources */, A97C55061AC933AD0038818A /* UMSnsAccountViewController.xib in Resources */, + A97559CD1ACBF0BC004ADA42 /* btn_bad@2x.png in Resources */, A93441F71ACA918100A6B233 /* tabbarSetup@2x.png in Resources */, A97C55011AC933AD0038818A /* UMSCommentInputController.xib in Resources */, + A97559AD1ACB9DF0004ADA42 /* navigationButtonRefreshClick@2x.png in Resources */, A93441F81ACA918100A6B233 /* tabbarSetupClick@2x.png in Resources */, A93441FE1ACA919F00A6B233 /* tabbarVoice-dark@2x.png in Resources */, + A9617A581ACC2EBC0024AE4A /* mine-setting-icon-click@2x.png in Resources */, A93441E51ACA8AC400A6B233 /* Profile_filter_contentIcon@2x.png in Resources */, + A97559B31ACBC683004ADA42 /* NotePublishViewController.xib in Resources */, A9FAD4231AC922A5007ADC10 /* MainViewController.xib in Resources */, A93441F61ACA918100A6B233 /* tabbarSetup-dark@2x.png in Resources */, A97DBE421ACAE4E300705682 /* first-login-icon.png in Resources */, @@ -770,21 +914,29 @@ buildActionMask = 2147483647; files = ( A9FAD4271AC922BE007ADC10 /* NoteViewController.m in Sources */, + A97559A01ACB88FE004ADA42 /* AWordDefault.m in Sources */, A97C54D31AC8F10F0038818A /* XiaoYuAPIClient.m in Sources */, + A97559C41ACBEE99004ADA42 /* NoteTableViewCell.m in Sources */, A9FAD4311AC923FC007ADC10 /* MyViewController.m in Sources */, + A97559BF1ACBE6C6004ADA42 /* NotePublishViewModel.m in Sources */, + A97559B21ACBC683004ADA42 /* NotePublishViewController.m in Sources */, A97C54DD1AC901980038818A /* MBProgressHUD+Util.m in Sources */, A97DBE331ACAE10800705682 /* LoginViewController.m in Sources */, + A97559A31ACB8CE0004ADA42 /* AWordUser.m in Sources */, A95510981AC39E6A0006D16F /* ViewController.m in Sources */, A98F986B1ACA2FA9007C4594 /* BaseRefreshViewController.m in Sources */, + A9617A541ACC27860024AE4A /* SetUpViewController.m in Sources */, A97C54D21AC8F10F0038818A /* AFgzipResponseSerializer.m in Sources */, A9FAD4221AC922A5007ADC10 /* MainViewController.m in Sources */, A9FAD42C1AC923E2007ADC10 /* MessageViewController.m in Sources */, A97C54CD1AC8F10F0038818A /* BaseViewModel.m in Sources */, + A9617A4F1ACC0D0F0024AE4A /* NoteViewModel.m in Sources */, A97C54CF1AC8F10F0038818A /* NSString+HXAddtions.m in Sources */, A95510951AC39E6A0006D16F /* AppDelegate.m in Sources */, A97C54D11AC8F10F0038818A /* RequireEngine.m in Sources */, A97C54D01AC8F10F0038818A /* PropertyEntity.m in Sources */, A93441DE1ACA311700A6B233 /* Ash_UIUtil.m in Sources */, + A97559B71ACBD99E004ADA42 /* UIPlaceHolderTextView.m in Sources */, A97C54D41AC8F10F0038818A /* XMFishBaseCode.m in Sources */, A97C54E11AC91DA10038818A /* CommonUtil.m in Sources */, A9FAD4351AC925AC007ADC10 /* LoginViewModel.m in Sources */, diff --git a/Ash_AWord.xcworkspace/xcuserdata/xmfish.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/Ash_AWord.xcworkspace/xcuserdata/xmfish.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index 3da2e4f..42ad4cb 100644 --- a/Ash_AWord.xcworkspace/xcuserdata/xmfish.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/Ash_AWord.xcworkspace/xcuserdata/xmfish.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -22,7 +22,7 @@ @@ -73,13 +73,253 @@ shouldBeEnabled = "Yes" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "Ash_AWord/ViewControllers/Main/MyViewController.m" - timestampString = "449488902.786326" + filePath = "Ash_AWord/ViewControllers/Login/LoginViewController.m" + timestampString = "449549149.00937" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "109" - endingLineNumber = "109" - landmarkName = "-tableView:didSelectRowAtIndexPath:" + startingLineNumber = "80" + endingLineNumber = "80" + landmarkName = "-weixinLoginBtnClick:" + landmarkType = "5"> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ash_AWord/Config/AWordDefault.h b/Ash_AWord/Config/AWordDefault.h new file mode 100644 index 0000000..6e679f8 --- /dev/null +++ b/Ash_AWord/Config/AWordDefault.h @@ -0,0 +1,32 @@ +// +// AWordDefault.h +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import + +@interface AWordDefault : NSObject + +//获取用户是否登录 ++(void)setIsLogin:(BOOL)isLogin; ++(BOOL)getIsLogin; + +//获取用户名 ++(void)setUserName:(NSString*)userName; ++(NSString*)getUserName; + +//获取uid ++(void)setUid:(NSString*)uid; ++(NSString*)getUid; + +//获取用户头像 ++(void)setUserAvatar:(NSString*)userAvatar; ++(NSString*)getUserAvatar; + +//获取用户性别 ++(void)setUserGender:(NSString*)userGender; ++(NSString*)getUserGender; +@end diff --git a/Ash_AWord/Config/AWordDefault.m b/Ash_AWord/Config/AWordDefault.m new file mode 100644 index 0000000..2cced1d --- /dev/null +++ b/Ash_AWord/Config/AWordDefault.m @@ -0,0 +1,64 @@ +// +// AWordDefault.m +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "AWordDefault.h" + +@implementation AWordDefault + ++(void)setIsLogin:(BOOL)isLogin +{ + [[NSUserDefaults standardUserDefaults] setBool:isLogin forKey:@"islogin"]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} ++(BOOL)getIsLogin +{ + return [[NSUserDefaults standardUserDefaults] boolForKey:@"islogin"]; +} + ++(void)setUid:(NSString *)uid +{ + [[NSUserDefaults standardUserDefaults] setObject:uid forKey:@"uid"]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} ++(NSString*)getUid +{ + return [[NSUserDefaults standardUserDefaults] stringForKey:@"uid"]; +} + ++(void)setUserName:(NSString *)userName +{ + [[NSUserDefaults standardUserDefaults] setObject:userName forKey:@"username"]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} ++(NSString*)getUserName +{ + return [[NSUserDefaults standardUserDefaults] stringForKey:@"username"]; +} + ++(void)setUserAvatar:(NSString *)userAvatar +{ + [[NSUserDefaults standardUserDefaults] setObject:userAvatar forKey:@"useravatar"]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} ++(NSString*)getUserAvatar +{ + return [[NSUserDefaults standardUserDefaults] stringForKey:@"useravatar"]; + +} + ++(void)setUserGender:(NSString *)userGender +{ + [[NSUserDefaults standardUserDefaults] setObject:userGender forKey:@"usergender"]; + [[NSUserDefaults standardUserDefaults] synchronize]; +} ++(NSString*)getUserGender +{ + return [[NSUserDefaults standardUserDefaults] stringForKey:@"usergender"]; + +} +@end diff --git a/Ash_AWord/Config/AWordUser.h b/Ash_AWord/Config/AWordUser.h new file mode 100644 index 0000000..17214b9 --- /dev/null +++ b/Ash_AWord/Config/AWordUser.h @@ -0,0 +1,20 @@ +// +// AWordUser.h +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import + +@interface AWordUser : NSObject + +@property (nonatomic, strong) NSString *uid; +@property (nonatomic, strong) NSString *userName; +@property (nonatomic, assign) BOOL isLogin; +@property (nonatomic, strong) NSString *userAvatar; +@property (nonatomic, strong) NSString* userGender; ++(AWordUser*)sharedInstance; + +@end diff --git a/Ash_AWord/Config/AWordUser.m b/Ash_AWord/Config/AWordUser.m new file mode 100644 index 0000000..e30f21c --- /dev/null +++ b/Ash_AWord/Config/AWordUser.m @@ -0,0 +1,53 @@ +// +// AWordUser.m +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "AWordUser.h" +static AWordUser *sharedObj = nil; +@implementation AWordUser + ++(AWordUser*)sharedInstance +{ + if (!sharedObj) + { + sharedObj = [[self alloc] init]; + sharedObj.uid = [AWordDefault getUid]; + sharedObj.isLogin = [AWordDefault getIsLogin]; + sharedObj.userName = [AWordDefault getUserName]; + sharedObj.userAvatar = [AWordDefault getUserAvatar]; + sharedObj.userGender = [AWordDefault getUserGender]; + } + return sharedObj; +} + +-(void)setUserName:(NSString *)userName +{ + _userName = userName; + [AWordDefault setUserName:userName]; +} +-(void)setUid:(NSString *)uid +{ + _uid = uid; + [AWordDefault setUid:uid]; + +} +-(void)setIsLogin:(BOOL)isLogin +{ + _isLogin = isLogin; + [AWordDefault setIsLogin:isLogin]; +} +-(void)setUserGender:(NSString *)userGender +{ + _userGender = userGender; + [AWordDefault setUserGender:userGender]; +} +-(void)setUserAvatar:(NSString *)userAvatar +{ + _userAvatar = userAvatar; + [AWordDefault setUserAvatar:userAvatar]; +} +@end diff --git a/Ash_AWord/Config/Common.h b/Ash_AWord/Config/Common.h index 4a65b64..e0a59ad 100644 --- a/Ash_AWord/Config/Common.h +++ b/Ash_AWord/Config/Common.h @@ -43,13 +43,21 @@ #define kMainScreenFrame ([[UIScreen mainScreen] bounds]) -#define kNetworkErrorTips @"网络连接失败" +//通知名 +#define kLoginSuccessNotificationName @"kLoginSuccessNotificationName" +#define kLogoutSuccessNotificationName @"kLogoutSuccessNotificationName" + +//文字标签 +#define kNetworkErrorTips @"网络连接失败" +#define kSSoErrorTips @"授权失败,请重新授权" +#define kLoginTips @"登录中" /** * 接口地址 */ #define Ash_AWord_API_URL @"http://121.43.150.13/QuestionServer" +//#define Ash_AWord_API_URL @"http://192.168.1.3:8080/QuestionServer" /** * 微信开放平台信息 @@ -65,5 +73,9 @@ #define kUmengAppkey @"551958aafd98c5cc010006d8" +/** + * 调整图片的宽度 + */ +#define NEWIMAGE_SIZE 700.f #endif diff --git a/Ash_AWord/Info.plist b/Ash_AWord/Info.plist index 1a19649..1004acd 100644 --- a/Ash_AWord/Info.plist +++ b/Ash_AWord/Info.plist @@ -45,6 +45,14 @@ tencent1104070329 + + CFBundleURLName + weixin + CFBundleURLSchemes + + wx8fbd37e4da758bbd + + LSRequiresIPhoneOS diff --git a/Ash_AWord/PrefixHeader.pch b/Ash_AWord/PrefixHeader.pch index 764733f..fe5b6fd 100644 --- a/Ash_AWord/PrefixHeader.pch +++ b/Ash_AWord/PrefixHeader.pch @@ -28,6 +28,14 @@ #import "Ash_UIUtil.h" #import "PropertyEntity.h" #import "RequireEngine.h" + #import "AWordUser.h" +#import "AWordDefault.h" +#import "UIImageView+WebCache.h" +#import "UIButton+WebCache.h" +#import "SDImageCache.h" +#import "Ash_UIUtil.h" +#import "Mantle.h" + #endif #endif diff --git a/Ash_AWord/Resource/btn_bad@2x.png b/Ash_AWord/Resource/btn_bad@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6c97f36994c5aea957cf4fbb6068cd5886b0a0b9 GIT binary patch literal 13734 zcmeI3T~HHO7=~9wg;+2%AcKIo22@1DCIKR>A^am)VL&n!0jVKbAcSl}vNQofsYR{D zu_{Fo6a*BNR&=0Rsv?RaR9caN(u#i-M+6itwnd8ty8#62ICjp3cV{Qb?w&m7JA0me zZ@;afAJ&+&2G@D8M(X19wSE|5 zp(6+-_h5PJ7eph1Ls4I)nm}EhoY@i%my7cGPFxpPKA*c7<#D(?j6;9;Y_1FL%Ex(2 z(6NIhWYAXvwKNW2=@&4z9DV1(N}wnej$vA@)=BH^q*TXaTz7YOeHk8)O%rTQDoKfT zY*J%4TI5w7KSCo>%T$z1Nuv6?;#g%0<-ua<7aBjt_N7pbFGOm_+|d>>omho&ojBNd zWqP83c7pq=2{ENqiN7ivY=mx}Yu~13)lL7t{r000@TZg1UeV0KqU_ zP#2H^AQ+|#>H;zV1jBSeT|fqaV3;nb3&;Qv4ATX50T}>-VY;9$AOk=!Oc&GzWB>?; z>4Lg|3;@9}T~HU00U#Kr3+e(g00hHyL0v!wfMA#|s0+vd5De1=bpaUwf?>L#E+7Ly zFiaQJ1!MpShUtR3fD8b^?@SkCqTPca=^hU)-ORDvz7?e#L5x*_t2GG1c&PtQ+L&z; zNe|jk{t;BTGLF)U)dcdEc82b=mD^~}LeGtKKInTYL^1_|aGWt7ALF`^-G;Le#NbMh zpSP$l&pV+t)Uu)Ala><|L_}oPX4^U{6d&y5{~8y7<$5i95Xqa`leW60CD`aQldPQ= zPj4^llRvdhD`eT$m;QF4^?Z)b;;b=?(Rn%VM%$^v$c}s}C#C1mhUa%;Y-|6ieI`72 zDYob6VbjLMlO4PF?D<%hKVU71R=74KFS5w4@1*eKGiJ=VV{B+pwbifl=EmbcwxxNx~U6K_^0_r0`~M6+|3FW86*+BaEQSutj2 z*V~mY;TfDhGB2p3bqa&7$E=e$f6CZYcek;zam|_o{r&w1%gYbP8O+Ucr2h&t*9Pr6 zn4jsk{X^^7-A#*UU9M)#6%_8>`vZU8Ow%oM67vTRTYG&U{dj3p<@8`<|I(J|d&hWY z4(5!Ym;3CznYJg_byu2orpAyPBcr3!+u7*0WY?nRIn}owTc;clIsR1{8a#KDv4LzIRUPi=ER zGBcTuUzZO)EaBA0_9rAJ_O8#+eA%GMDUxnux@OQdo^5n^6jr)}+&z4$`^TW(?IMNC7nEBny!@UWa&R}|pYud^x0 z-_iWQTE1sT%#CW7F!TG-k&$V|(@M&Fd)nLE7i<=j1-YgdI3KK%52c0DJ1jdSsk&Zq zV)2=^Z8rX4H&fhfY{NY-(yz*Gd(`TvsCC&)$M~x2$9LKHO+va}3=UQdtQY+$JvD6b UyZlZFoqHt6Kg6%XXYIy+0nhkOR{#J2 literal 0 HcmV?d00001 diff --git a/Ash_AWord/Resource/btn_bad_clicked@2x.png b/Ash_AWord/Resource/btn_bad_clicked@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..3e5901f0049939259f0246eb1a15cf7bd8706193 GIT binary patch literal 13682 zcmeI3Yfuwc6vwv~+n9o)A}VEYO(R2*Wb=RsYXTA;5=R)ophz7tCJO{eHcb{cpo2A4 zQGC#%fJ#*!T5){M$S5teWm;scP{hZeGSoU2+hD0?lrq`^V{ZV#I*y(D!Eg6YHhcH( z|D1F0Z~tG<_V~EPZd@-ehG8xd=}J{RhEJH^QM(a5yQyL#6TzMDyg2WG|GU_}ec>+b~QrORr95l4F;WTG}Ag=;*bS&}uLNA%@ArtR{^%i(>G#RJz`%;5ix^ zdAMGu;H?OX6~&q&s0@8fo|#&f7pK~S6doj$3bZ1z7?;U};=mx8OdNnqL}Cdc0za8R97qPq zNXY_xbnrsCU?w-~(#XWf=+ScENx{ot7!yelEXxX6sgO3O6XKAN5N8^RL;w^5ORka8 zSOrGQ2O~+I=ZT~&TC?87=xHPF%&S>T=P(K$&sk_}jGoJ28Y^V9jIsk139H6Lh=n3z zEHem{114mInbI({SxwW~p(7`c)|)AoHfLGzh-EU|Z-w5dqgl&`a^hwAc>VEARHTNX zLIIyZfk-Nl$kd`>QY0b+r717OkBD9hkEM0`wA@#R2gydmUl5Ik%Lylv7Z45ecb@L0 z_5VYs(~gld<(RXFKafsKP}!7$GBOrGPyAncIxU$-n++N!RBzCvQ-sNwE+@tpU%S7N zT?2yvZxUnXe7^OukNQR?De}i=YFS+(f;_|lN^BeDk9d1vr znOaJ%+;d51{(9Bv82+?MzrxIODT1fXOMUmK0z7xj<=8T8gZYiA9#K=3oR0EAw*+P~DdnyuJqZpAmp7xRxN2Y5RCOWN&yWv#zG=3Ysw z?G(8-{hU;z_AfEgC7)NU5|$0vy*qmQ|EVs>uUC3s{Ftp-*Kj+321m(Z8*X3j?aw#Vq->F#G>a@o&Dl)DDo2l|E^jbczye(~^PtjsU{Hf(9W~a=x;oBC^xR&{T zn5Xx}N5;CY4x3+L)lc@mT+u97FI%{~%cL#J%Ay-*w)`5rTY8f8+|m4l$hG>WckUtk zL9qWT?IzbIQ7P4VH6w5W_DM(PxoIxp75W3`Q%>D@QdG$9ygaA2(Xk157*j>XMV?l! GvHc4pFFN=D literal 0 HcmV?d00001 diff --git a/Ash_AWord/Resource/btn_good@2x.png b/Ash_AWord/Resource/btn_good@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..171c7847875e3626f4e5f01e16e3cbe8e9add0c9 GIT binary patch literal 13699 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 P;8RSOl&amQSyTNlIVc)` literal 0 HcmV?d00001 diff --git a/Ash_AWord/Resource/btn_share@2x.png b/Ash_AWord/Resource/btn_share@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d9dd633cc3f5c77a90624b52060d856cd84cb165 GIT binary patch literal 13327 zcmeI3Z%i9y9LKL4akT-J8kUV}1avb77`~XvGPi8XH0ad%hna{AW;k5@wC2%3)CU#Z_si0EN?-3e%RlcRSDa`f8IA?^Y@t9mm1{4r^jm48^1o9Q32OjiPNN1%3_-UBy&8 z7~5lbb`TyDxN@nHC=>E+&29(o+{7MDQy7v=Bofwy-72e{B<*xM^)fb_1rU~akEF3l zixhugrO1ssK0eN=f}#nsgzI(L4!K)%6NJ7|Ze-s}RB{_h@vJ*wkxa4*Nn0s0R~amH z0Vhno%CnlRhGn_Sv-0L!1(i?8YAlY|w>a=EI|V5sC*l<@axI?UKVOOWu^R6IeyS{# z-C}cusmB?LX6(-PRqI!vHOqr?M2Pm>e0epMUA_v+E_ac-l2wY9{p)YHX8!-wMYxkT zG5`gmbRk_(2B2V+E~E>}02GYUg>*p~fPzuFkS-_#P%ugt(gkGz3P$Ndx}Xd|!6;ow z7nA`g7^Ms8f-(RFqjVu%PzIo2lrE$T$^aCM(uH(E8GwROx{xj?15hwZ7t#e~018Iw zLb{*~K*6_6mnq-w!AqdWBLSK@+P}Oo2^vA}R2tjj7-srSKMebairT^CMy;V$TkdGk zdnLkx$YYe9v^hw+N}4a&42UwFXpy5@f>n9!CJhhsA5RWrn86p_<;MsTMgzuY~Sz3 z>Ck8X%g=>=oqE5FuJw70GtNcN`tr(c73bgm#$S8x#OY_t#Gj775}nv9zTS7;{PKo< z(hkSnJr_eyA4{b#kuPR877_~=C2_dtRB-yqAHOeM{L{0ma_sa%$%jmO=Hbh1YVYxr zC+EJ}J^J@UuP)9Vo}KM)I#bH+t}5_sN{zs*peox zwVS4F3psdfY=dT5%hrytj5VCfi8G|v{*jTzYNui_rb0~YVT{{b< z;~jc?!m^$opZ9yxN8ju3jlSOJ>aEXM0RXk(WT>YPP&NAs`B%|>eNT5}0A2T(r=<@4 z{{&8*LYG=S)DyFyW7;C-0B|=-u~B0*`aB<3(k?+%#-S^lRuKq*zay&(@kwY<<1i`7 z0ebU`C7P1N06pT3vQae*C#3Ev4GvEA#^O_x@ph5!2wMGF9u-JKL!h$hl&tgF09~xh zqp>;7&{PpICIfV*xgj+g?W4kq1}U%0}R&))%~lLU_>xr5cz3yvL2_~ z7h@0bEXRAjhqkOQLEDx`6;VnYd)RU}&+RWS-vX7F`x#To7DYw>=G$$X|37tNykbs0 zqNR!-NQ^Tu1=CPAbYzeFuRSr&CloC$7(pp5Bq5{9Nk3DaeB|?$o*D%NWs|9d^TDH6 zKI&r`RJ}iz@};6=6D+wz7tw`f01GDRBD$~)V8J9^L>HC;ESRK==)y991(S3UU04RN zV3IDP3(Ei&OwvVkVHv=JNxFzGECX0DNf*(DWdI8%=_0zY3}C?|T|^g_0W6rLi|E2K zfCZCu5nWgYuwardq6^Ca7EIDbbYU65f=RlFE-V9BFi98Dg=GK>Cg~!&unb_qBwa)o zmH{mIk?FEl+dZI+dOR|ynWO)SZVPGzc}ndb(*dyFGS3||Z`L0|lTAj~s4=J{jEtZ` z@Q`+fwJVEnA?|6DD|SAZJryx24FT(6+&+eDlhDh$o~5N)r+nCh1Gi><*r`O2TnFLH22=JhyJ=pul{pCtty-OkB@%U7~l9E zyw>vUZBJ(Tl_otiR`_6|qhq8czjNxB!>!TlO@F5xLxrW6rjIXNNQTbexcTATI@;Oj QK;}SCS8wFA(91Lb0_Kcu@&Et; literal 0 HcmV?d00001 diff --git a/Ash_AWord/Resource/mine-setting-icon-click@2x.png b/Ash_AWord/Resource/mine-setting-icon-click@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..e16616fc5cc5723077ea371a36c451d1ff06f867 GIT binary patch literal 2220 zcmaJ@c~}$I77xhkb3w$)B4vylR>;DdM1m{{0uqRj3bIr}G9&?#36sGD$|6yuh-fR= z8Zd~y3W%0|C{aP5iax9;D~$k!LLXK{HViO$~mA%MlA z1xREVSHgn>7<4>yZ_)Se`@Q|rwKro2jI0;vb%lLF?oH6VIz>NiE?i_FSz>vEN=5RF(b9VH;vm z(0Z=J=hsubWAp`-n?vUk(O7aB^&qz1$P=`}_9OX$gUl*+N78Y_GpL5}kVk4P~Xr z%?RI*nOYdj(heLsQ{;b+qr8239e_FZSlXfGUznQxdDr$Y)a|OTuB|HSPHK5(3C2ia zs@3TSqPw$`73wB_kd)G_*tFvQ<=VC8n~vJ60$(j@GYNYqTx9{)Gx4OR=4|suyU%U* z)+nwTh5ezHSMDIaznWsDoGFLcV}Cd()&I0 zdyN?PElo&(E6F3H>rIp9{@p<0$pliQ5YD;843e(Bsn~SXTh*4<8Ifm!bLmo9-I*9Z zYE|I3dK;;-Rom?UBThQ4Iv+_Lx5|4trQPSVxv(kvvw=o)P1nAwnXIo5FcVI(y_z_8 zpH59JTNkzwSY`A^Jl{0upXQqSjEgmOBEk92$m7HH8{3xJnOBeZ4cu~hl+e6q(SBQP z^dV`DL+r~xnE1Mxo2yqg4eV(c-w^FEB7KG~aI%yPKCnVGRh*FE34J~&zfFdsLn2tE z?dJgw{>D({qv!{ECg+`12XCdO_ed&|UN>X|;#Zz^nxzYj8|3n3>GB_n?Jcl!jb=yx z>TULn%Mm;9ZO>_{U0?(q_xYY(*=DI0r5r_1sM|{Q8sxjH$6g6T>XO#Ieft7J`r4~^ zXua@;-d$l1`oB+4pFO8HG&m>e~89V7>%FK%C3mhG5Ek&mzy$)WAwAHJq*lcyS zRjUnMJ~)W4@k!R)IKyUxx%Jp+(uV%6H=c`bNBuOh#9*h=+eULeOPvBZ>+wyE5Q}fE z3L2}UYLhj;UXjn*)^`eqnwIxwOZNRxxbvr&Nwkcc{OTR0w!UlP!rq4uuh`|bw_Ep{ z2_vFMBg^-MKF96_d7ld{IAmv=tWvgi1eB9#|DL`OaV}Kjxhpp}=AK37zXsNC$h)37 zBMgsUdM8$a%?y15Y7aI-@iR2-#9?X8=+IQ__AAlBZj2*Svq+ysmGM$V^Ti80ExUV? zO2qkJR&Bmh;$B<9In^T&0FmzW+ma62egIUiwKQ&-^5Mhov7i?9WU*NG#;ih%?O2*! z=I8D%P~Lj-_1kyjEGgw&YfFm;#nFGx9bSt8%%E?AVAMdVta#O>|t zgWEQIH-&KQa+F~i=6Qq>l%jo(Hu1+XYL5Q8!hoA8X?F`dI#yMcYi}G1Il=c`o9a4H z#2vmXieWvqEnmS|eA{3ve)sy4#`iN5hG37~pPEUH5_i9Tnp4o#SJ5+lRoxVyn4mi^ zD2=toqyqL50YSdqefh%omZ`7r9K0Q;PO*!t$$w<5%}4Ru4##HZ_`GE3lN=mstCOo+ z?VKDOAO*fP?3gzHV$^R9BL+iRZM=c{#{=jjK~a}JQvWz(Bnli-?$<_wYQ% Mn8A!{pIGI80HbB6(EtDd literal 0 HcmV?d00001 diff --git a/Ash_AWord/Resource/mine-setting-icon@2x.png b/Ash_AWord/Resource/mine-setting-icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..6c46c3c1d74e46147ea17753ec328a56d753b6ea GIT binary patch literal 1680 zcmeAS@N?(olHy`uU|?}hck&EiP+-!&y15?6=k@e(2?Ek4Ak4uAB#%}|zh+=yR?ZBG zD2ed(u}aR*)k{ptPfFFR$SnZMGcefLR}>^BXQ!4ZB&DWj=GiK}-@RW+Av48RDcsc8 zz_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3diNuokUZcbjYRfVk**jy_h8zii+ zqySb@l5MNx2(nNi!Z$#{Ilm}X!Bo#wH`&0@M8Vur&(PG+#KKTV!N|bSSl_@{-_Tgs z(8$Wb(#p_O0Sc6WwiTtMSp~VcLG1$aY?U%fN(!v>^~=l4^~#O)@{7{-4J|D#^$m>l zjf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaozEwNPsx)kDt+yc06!V;*iRMRQ;gT;{4L0EYy}sOOnH&w-7{eepN;vo*}vC+ znU|gYZt|TwU*>&3UuiMtd+qsZ1-Bjv!=x>JG6gIqGV_#s%SF8ouoWDBc=JNVb-}1Y z$>^6ZPLdCJC-BY;2rDxVoV=1@euI_4>i3)pA`wih>{?b$lAbEJDR}x_uaG512N*x_ zc`%lncDf(n`@njGMUKH)&#cYlr|$#y501Y|Z+f5HR~S@gB&HLjny|xl_TfvLPed5_ zo$Bpr{hWKN{F1p>mgtRg#bhDPpRv5RKgj-#c9|I&t9pifLwmNs#E@Q`Y&b0?xO6I+`eJIGFWY7Opc9*eQV(H{GUy1o$GkWG;3AxdB z`u~d8lc(G-y3wXzbZPo+gPAyH3)4Z~+N&C;sInNfUJa*H%F49}p zaNcX*_Yd!K?}r;kPmSBy8KR|SR2KAm+rCJq9qSgmOt{^i`fp$DhD9&xrlidBoZ6V# zzocT;?}eE+&t6D;u}gZ7Ld(C^*4O5o)Aif_;CRVH-3m}*JYvvv{|mRBFsS12boFyt I=akR{0Pz2eX8-^I literal 0 HcmV?d00001 diff --git a/Ash_AWord/Resource/navigationButtonPublish@2x.png b/Ash_AWord/Resource/navigationButtonPublish@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..be180a9e52cc3404929cf18c70e4b967c681f144 GIT binary patch literal 1513 zcmeAS@N?(olHy`uU|?}hck&EiP+-!&y15?6=k@e(2?Ek4Ak4uAB#%}|zh+=y&ddyn zD2ed(u}aR*)k{ptPfFFR$SnZMGcefLR}>^BXQ!4ZB&DWj=GiK}-@RW+Av48RDcsc8 zz_-9TH6zobswg$M$}c3jDm&RSMakYy!KT6rXh3diNuokUZcbjYRfVk**jy_h8zii+ zqySb@l5MNx2(nNi!Z$#{Ilm}X!Bo#wH`&0@M8Vur&(PG+#KKTV!N|bSSl_@{-_Tgs z(8$Wb(#p_O0Sc6WwiTtMSp~VcLG1$aY?U%fN(!v>^~=l4^~#O)@{7{-4J|D#^$m>l zjf`}GDs+o0^GXscbn}XpVJ5hw7AF^F7L;V>=P7_pOiaozEwNPsx)kDt+yY-;xWReF z(0~F4nSMoLfxe-hfqrf-$X{U9#U(+h2xnkbT^v$bkg6Y)TAW{6l$;7wt_;%*3_JW5 zffNE=W946z35=A)9GCp$(%jU%5>FRfC7_I6N@j{xie-{{lDWBou6dGinyx{riHWX- zp;4Nyk-15-sfl5dnX!o(%p7d`O)QO^ja-ck%v>!T4Gmq59nDOQTn&tzjV&FWj4hm8 zV0u0Cic1pnl2c)JX9Dep=rwf1tJli8C^fMpzbGU>KL?fy0y6ST@{2R_3lyB46*R&# z^HTE5i#0(p1o5y-YEfocYKmJ?ey##Ih^;cQS?}!RYG&!|Xy#;L0dl&Np`(+fsgsMD ztAUfTrHh*qRBsBFU^9W}b;7AvALtl;Q2IbhFEAlsA_OtvsUOIJ=bzL(V5TVo=8k^R zlVQM|C0XJcQ4*Y=R#Ki=l*$0f1fIEx>A;kbm{M7IGS!BGfr-u2#WCdVP5+GZg)+xK z9zQ>6V*T#LdtGQSE&-VAe`|r;F|-|HBS1s3`8B$U(K!IFpo~S zy5~k~`HaK!KFA(3w{b|{>u@>Z$Z@sXtqd~`=QJEFtm#+3G9h60vAJR`k@+n*vcI&v zFA3S|xhDIH(^>{AiIeuiM;XpNR6n+H+r(~D=?sSWk0P@Vms@fjSgXMi#Aqe;^CwH} zLutMlf+4duW^8WobEyl_4rg7=SS(uoQHVW=!Akn4VQU}9>WvLMMQXpfS1)+uAkO?u z@0RjI^+V~d3uQwhW>d(4t$|a4z|N{IThLE27Sx6MtuJ z{3D>E+m9`Sciv-fnF+Rq`)3|KS3hTQh(m3w^fQ}#k43j#H*jCspcY=kyrch})N>8q z0Q0&dOLLdB325tH5S(-5m(_LOXR&(BsS9|fG#Ul4opO*|@x)>N-+wQzdsW}oSrGPD fKI&}Q=~E!!<*}cke7~Y4s6_U3^>bP0l+XkK6N4?l literal 0 HcmV?d00001 diff --git a/Ash_AWord/Resource/navigationButtonPublishClick@2x.png b/Ash_AWord/Resource/navigationButtonPublishClick@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ba352e60a7a24672bcbcf46d43e6f2721d222d GIT binary patch literal 1917 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 K^ozCc$^QX?g9D-f literal 0 HcmV?d00001 diff --git a/Ash_AWord/Utility/Network/PropertyEntity.m b/Ash_AWord/Utility/Network/PropertyEntity.m index 84222af..5cbcf44 100644 --- a/Ash_AWord/Utility/Network/PropertyEntity.m +++ b/Ash_AWord/Utility/Network/PropertyEntity.m @@ -30,7 +30,17 @@ // [key stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; // NSDictionary *dic = @{@"mkey":key}; - return _pro; + NSMutableDictionary* dic; + if (_pro) { + dic = [NSMutableDictionary dictionaryWithDictionary:_pro]; + }else{ + dic = [NSMutableDictionary dictionary]; + } + if ([AWordUser sharedInstance].isLogin && [AWordUser sharedInstance].uid) { + [dic setObject:[AWordUser sharedInstance].uid forKey:@"uid"]; + + } + return dic; } @end diff --git a/Ash_AWord/Utility/Network/RequireEngine.m b/Ash_AWord/Utility/Network/RequireEngine.m index 40ab272..d8c549f 100644 --- a/Ash_AWord/Utility/Network/RequireEngine.m +++ b/Ash_AWord/Utility/Network/RequireEngine.m @@ -47,7 +47,7 @@ if (proper.requireType == HTTPRequestTypeWithGET) { return [[XiaoYuAPIClient sharedClient] GET:[proper reqURL] - parameters:[proper url] ? [proper encodePro] : [proper pro] + parameters: [proper encodePro] success:^(AFHTTPRequestOperation * __unused task, id json) { DLog(@"%@", json); @@ -87,7 +87,7 @@ }]; } else if(proper.requireType == HTTPRequestTypeWithPOST){ return [[XiaoYuAPIClient sharedClient] POST:[proper reqURL] - parameters:[proper url] ? [proper encodePro] : [proper pro] + parameters:[proper encodePro] success:^(AFHTTPRequestOperation * __unused task, id JSON) { DLog(@"%@", JSON); @@ -112,7 +112,7 @@ }]; } else if(proper.requireType == HTTPRequestTypeWithPOSTDATA){ return [[XiaoYuAPIClient sharedClient] POST:[proper reqURL] - parameters:[proper url] ? [proper encodePro] : [proper pro] + parameters:[proper encodePro] constructingBodyWithBlock:^(id formData) { for (int i = 0; i < proper.pFile.img.count; i++) { UIImage *uploadImage = proper.pFile.img[i]; diff --git a/Ash_AWord/Utility/Tool/Ash_UIUtil.h b/Ash_AWord/Utility/Tool/Ash_UIUtil.h index 9593bcb..96fb046 100644 --- a/Ash_AWord/Utility/Tool/Ash_UIUtil.h +++ b/Ash_AWord/Utility/Tool/Ash_UIUtil.h @@ -9,6 +9,8 @@ #import @interface Ash_UIUtil : NSObject + ++(CGSize)downloadImageSizeWithURL:(id)imageURL; /** * 通过类名出创建xib类 */ @@ -32,12 +34,12 @@ /** * 创建自定义UIBarButtonItem,用于右边 */ -+ (UIBarButtonItem *)rightBarButtonItemWithTarget:(id)target action:(SEL)action image:(UIImage *)image; ++ (UIBarButtonItem *)rightBarButtonItemWithTarget:(id)target action:(SEL)action image:(UIImage *)image highlightedImage:(UIImage*)highlightedImage; /** * 创建自定义UIBarButtonItem,用于左边 */ -+ (UIBarButtonItem *)leftBarButtonItemWithTarget:(id)target action:(SEL)action image:(UIImage *)image; ++ (UIBarButtonItem *)leftBarButtonItemWithTarget:(id)target action:(SEL)action image:(UIImage *)image highlightedImage:(UIImage*)highlightedImage; + (CGFloat)currentScreenSizeRate; @@ -66,6 +68,8 @@ * @return 压缩后的图片 */ +(UIImage*)compressImageDownToPhoneScreenSize:(UIImage*)originImage; + + @end @interface UIFont (CustomFont) diff --git a/Ash_AWord/Utility/Tool/Ash_UIUtil.m b/Ash_AWord/Utility/Tool/Ash_UIUtil.m index bad9893..1e2d6ab 100644 --- a/Ash_AWord/Utility/Tool/Ash_UIUtil.m +++ b/Ash_AWord/Utility/Tool/Ash_UIUtil.m @@ -10,6 +10,156 @@ @implementation Ash_UIUtil +//讨厌警告 +-(id)diskImageDataBySearchingAllPathsForKey:(id)key{return nil;} ++(CGSize)downloadImageSizeWithURL:(id)imageURL +{ + NSURL* URL = nil; + if([imageURL isKindOfClass:[NSURL class]]){ + URL = imageURL; + } + if([imageURL isKindOfClass:[NSString class]]){ + URL = [NSURL URLWithString:imageURL]; + } + if(URL == nil) + return CGSizeZero; + + NSString* absoluteString = URL.absoluteString; + +#ifdef dispatch_main_sync_safe + if([[SDImageCache sharedImageCache] diskImageExistsWithKey:absoluteString]) + { + UIImage* image = [[SDImageCache sharedImageCache] imageFromMemoryCacheForKey:absoluteString]; + if(!image) + { + NSData* data = [[SDImageCache sharedImageCache] performSelector:@selector(diskImageDataBySearchingAllPathsForKey:) withObject:URL.absoluteString]; + image = [UIImage imageWithData:data]; + } + if(image) + { + return image.size; + } + } +#endif + + NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:URL]; + NSString* pathExtendsion = [URL.pathExtension lowercaseString]; + + CGSize size = CGSizeZero; + if([pathExtendsion isEqualToString:@"png"]){ + size = [self downloadPNGImageSizeWithRequest:request]; + } + else if([pathExtendsion isEqual:@"gif"]) + { + size = [self downloadGIFImageSizeWithRequest:request]; + } + else{ + size = [self downloadJPGImageSizeWithRequest:request]; + } + if(CGSizeEqualToSize(CGSizeZero, size)) + { + NSData* data = [NSURLConnection sendSynchronousRequest:[NSURLRequest requestWithURL:URL] returningResponse:nil error:nil]; + UIImage* image = [UIImage imageWithData:data]; + if(image) + { +#ifdef dispatch_main_sync_safe + [[SDImageCache sharedImageCache] storeImage:image recalculateFromImage:YES imageData:data forKey:URL.absoluteString toDisk:YES]; +#endif + size = image.size; + } + } + return size; +} ++(CGSize)downloadPNGImageSizeWithRequest:(NSMutableURLRequest*)request +{ + [request setValue:@"bytes=16-23" forHTTPHeaderField:@"Range"]; + NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; + if(data.length == 8) + { + int w1 = 0, w2 = 0, w3 = 0, w4 = 0; + [data getBytes:&w1 range:NSMakeRange(0, 1)]; + [data getBytes:&w2 range:NSMakeRange(1, 1)]; + [data getBytes:&w3 range:NSMakeRange(2, 1)]; + [data getBytes:&w4 range:NSMakeRange(3, 1)]; + int w = (w1 << 24) + (w2 << 16) + (w3 << 8) + w4; + int h1 = 0, h2 = 0, h3 = 0, h4 = 0; + [data getBytes:&h1 range:NSMakeRange(4, 1)]; + [data getBytes:&h2 range:NSMakeRange(5, 1)]; + [data getBytes:&h3 range:NSMakeRange(6, 1)]; + [data getBytes:&h4 range:NSMakeRange(7, 1)]; + int h = (h1 << 24) + (h2 << 16) + (h3 << 8) + h4; + return CGSizeMake(w, h); + } + return CGSizeZero; +} ++(CGSize)downloadGIFImageSizeWithRequest:(NSMutableURLRequest*)request +{ + [request setValue:@"bytes=6-9" forHTTPHeaderField:@"Range"]; + NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; + if(data.length == 4) + { + short w1 = 0, w2 = 0; + [data getBytes:&w1 range:NSMakeRange(0, 1)]; + [data getBytes:&w2 range:NSMakeRange(1, 1)]; + short w = w1 + (w2 << 8); + short h1 = 0, h2 = 0; + [data getBytes:&h1 range:NSMakeRange(2, 1)]; + [data getBytes:&h2 range:NSMakeRange(3, 1)]; + short h = h1 + (h2 << 8); + return CGSizeMake(w, h); + } + return CGSizeZero; +} ++(CGSize)downloadJPGImageSizeWithRequest:(NSMutableURLRequest*)request +{ + [request setValue:@"bytes=0-209" forHTTPHeaderField:@"Range"]; + NSData* data = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil]; + + if ([data length] <= 0x58) { + return CGSizeZero; + } + + if ([data length] < 210) {// 肯定只有一个DQT字段 + short w1 = 0, w2 = 0; + [data getBytes:&w1 range:NSMakeRange(0x60, 0x1)]; + [data getBytes:&w2 range:NSMakeRange(0x61, 0x1)]; + short w = (w1 << 8) + w2; + short h1 = 0, h2 = 0; + [data getBytes:&h1 range:NSMakeRange(0x5e, 0x1)]; + [data getBytes:&h2 range:NSMakeRange(0x5f, 0x1)]; + short h = (h1 << 8) + h2; + return CGSizeMake(w, h); + } else { + short word = 0x0; + [data getBytes:&word range:NSMakeRange(0x15, 0x1)]; + if (word == 0xdb) { + [data getBytes:&word range:NSMakeRange(0x5a, 0x1)]; + if (word == 0xdb) {// 两个DQT字段 + short w1 = 0, w2 = 0; + [data getBytes:&w1 range:NSMakeRange(0xa5, 0x1)]; + [data getBytes:&w2 range:NSMakeRange(0xa6, 0x1)]; + short w = (w1 << 8) + w2; + short h1 = 0, h2 = 0; + [data getBytes:&h1 range:NSMakeRange(0xa3, 0x1)]; + [data getBytes:&h2 range:NSMakeRange(0xa4, 0x1)]; + short h = (h1 << 8) + h2; + return CGSizeMake(w, h); + } else {// 一个DQT字段 + short w1 = 0, w2 = 0; + [data getBytes:&w1 range:NSMakeRange(0x60, 0x1)]; + [data getBytes:&w2 range:NSMakeRange(0x61, 0x1)]; + short w = (w1 << 8) + w2; + short h1 = 0, h2 = 0; + [data getBytes:&h1 range:NSMakeRange(0x5e, 0x1)]; + [data getBytes:&h2 range:NSMakeRange(0x5f, 0x1)]; + short h = (h1 << 8) + h2; + return CGSizeMake(w, h); + } + } else { + return CGSizeZero; + } + } +} + (id)instanceXibView:(NSString*)xibName { NSArray* nibView = [[NSBundle mainBundle] loadNibNamed:xibName owner:nil options:nil]; @@ -55,11 +205,13 @@ } } -+ (UIBarButtonItem *)rightBarButtonItemWithTarget:(id)target action:(SEL)action image:(UIImage *)image ++ (UIBarButtonItem *)rightBarButtonItemWithTarget:(id)target action:(SEL)action image:(UIImage *)image highlightedImage:(UIImage *)highlightedImage { UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)]; [btn setImage:image forState:UIControlStateNormal]; - [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; + if (highlightedImage) { + [btn setImage:highlightedImage forState:UIControlStateHighlighted]; + } [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; if (iOSVersion >= 7.0) { @@ -70,10 +222,13 @@ return barItem; } -+ (UIBarButtonItem *)leftBarButtonItemWithTarget:(id)target action:(SEL)action image:(UIImage *)image ++ (UIBarButtonItem *)leftBarButtonItemWithTarget:(id)target action:(SEL)action image:(UIImage *)image highlightedImage:(UIImage *)highlightedImage { UIButton *btn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, image.size.width, image.size.height)]; [btn setImage:image forState:UIControlStateNormal]; + if (highlightedImage) { + [btn setImage:highlightedImage forState:UIControlStateHighlighted]; + } [btn addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; if (iOSVersion >= 7.0) @@ -227,6 +382,7 @@ //RETURN return theImage; } + /** * 获取当前屏幕与4寸屏幕比例 * 4寸返回1.0 diff --git a/Ash_AWord/Vender/UIPlaceHolderTextView/UIPlaceHolderTextView.h b/Ash_AWord/Vender/UIPlaceHolderTextView/UIPlaceHolderTextView.h new file mode 100644 index 0000000..179495c --- /dev/null +++ b/Ash_AWord/Vender/UIPlaceHolderTextView/UIPlaceHolderTextView.h @@ -0,0 +1,25 @@ +// +// UIPlaceHolderTextView.h +// WangsuTraffic +// +// Created by 华桂 陈 on 12-2-23. +// Copyright (c) 2012年 ChinaNetCenter. All rights reserved. +// + +#import + +@interface UIPlaceHolderTextView : UITextView +{ +@private + NSString *placeholder_; + UIColor *placeholderColor_; + UILabel *placeHolderLabel_; +} + +@property (nonatomic, retain) UILabel *placeHolderLabel; +@property (nonatomic, copy) NSString *placeholder; +@property (nonatomic, retain) UIColor *placeholderColor; + +-(void)textChanged:(NSNotification*)notification; + +@end \ No newline at end of file diff --git a/Ash_AWord/Vender/UIPlaceHolderTextView/UIPlaceHolderTextView.m b/Ash_AWord/Vender/UIPlaceHolderTextView/UIPlaceHolderTextView.m new file mode 100644 index 0000000..0500e27 --- /dev/null +++ b/Ash_AWord/Vender/UIPlaceHolderTextView/UIPlaceHolderTextView.m @@ -0,0 +1,87 @@ +// +// UIPlaceHolderTextView.m +// WangsuTraffic +// +// Created by 华桂 陈 on 12-2-23. +// Copyright (c) 2012年 ChinaNetCenter. All rights reserved. +// + +#import "UIPlaceHolderTextView.h" + +@implementation UIPlaceHolderTextView + +@synthesize placeHolderLabel = placeHolderLabel_; +@synthesize placeholder = placeholder_; +@synthesize placeholderColor = placeholderColor_; + +- (void)awakeFromNib +{ + [super awakeFromNib]; + [self setPlaceholder:@""]; + [self setPlaceholderColor:[UIColor lightGrayColor]]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextViewTextDidChangeNotification object:nil]; +} + +- (id)initWithFrame:(CGRect)frame +{ + if( (self = [super initWithFrame:frame]) ) + { + [self setPlaceholder:@""]; + [self setPlaceholderColor:[UIColor lightGrayColor]]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textChanged:) name:UITextViewTextDidChangeNotification object:nil]; + } + return self; +} + +- (void)textChanged:(NSNotification *)notification +{ + if([[self placeholder] length] == 0) + { + return; + } + + if([[self text] length] == 0) + { + [[self viewWithTag:999] setAlpha:1]; + } + else + { + [[self viewWithTag:999] setAlpha:0]; + } +} + +- (void)setText:(NSString *)text { + [super setText:text]; + [self textChanged:nil]; +} + +- (void)drawRect:(CGRect)rect +{ + if( [[self placeholder] length] > 0 ) + { + if ( placeHolderLabel_ == nil ) + { + placeHolderLabel_ = [[UILabel alloc] initWithFrame:CGRectMake(4,8,self.bounds.size.width,0)]; + placeHolderLabel_.lineBreakMode = NSLineBreakByWordWrapping; + placeHolderLabel_.numberOfLines = 0; + placeHolderLabel_.font = self.font; + placeHolderLabel_.backgroundColor = [UIColor clearColor]; + placeHolderLabel_.textColor = self.placeholderColor; + placeHolderLabel_.alpha = 0; + placeHolderLabel_.tag = 999; + [self addSubview:placeHolderLabel_]; + } + + placeHolderLabel_.text = self.placeholder; + [placeHolderLabel_ sizeToFit]; + [self sendSubviewToBack:placeHolderLabel_]; + } + + if( [[self text] length] == 0 && [[self placeholder] length] > 0 ) + { + [[self viewWithTag:999] setAlpha:1]; + } + + [super drawRect:rect]; +} +@end diff --git a/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.h b/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.h index b2edf4e..6c8404e 100644 --- a/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.h +++ b/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.h @@ -7,7 +7,7 @@ // #import "ViewController.h" - +#import "MJRefresh.h" @interface BaseRefreshViewController : ViewController @property (weak, nonatomic) IBOutlet UITableView *tableView; diff --git a/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.m b/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.m index 94a4e90..58bbb88 100644 --- a/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.m +++ b/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.m @@ -7,7 +7,7 @@ // #import "BaseRefreshViewController.h" -#import "MJRefresh.h" + @interface BaseRefreshViewController () diff --git a/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.xib b/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.xib index edacb5d..02553f7 100644 --- a/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.xib +++ b/Ash_AWord/ViewControllers/Common/BaseRefreshViewController.xib @@ -18,7 +18,7 @@ - + diff --git a/Ash_AWord/ViewControllers/Login/LoginViewController.h b/Ash_AWord/ViewControllers/Login/LoginViewController.h index 4b119ea..9889a1c 100644 --- a/Ash_AWord/ViewControllers/Login/LoginViewController.h +++ b/Ash_AWord/ViewControllers/Login/LoginViewController.h @@ -9,5 +9,8 @@ #import @interface LoginViewController : UIViewController +- (IBAction)qqLoginBtnClick:(id)sender; +- (IBAction)weixinLoginBtnClick:(id)sender; +- (IBAction)closeBtnClick:(id)sender; @end diff --git a/Ash_AWord/ViewControllers/Login/LoginViewController.m b/Ash_AWord/ViewControllers/Login/LoginViewController.m index 7b4e10d..2c6a330 100644 --- a/Ash_AWord/ViewControllers/Login/LoginViewController.m +++ b/Ash_AWord/ViewControllers/Login/LoginViewController.m @@ -7,7 +7,8 @@ // #import "LoginViewController.h" - +#import "LoginViewModel.h" +#import "UMSocial.h" @interface LoginViewController () @end @@ -18,7 +19,11 @@ [super viewDidLoad]; // Do any additional setup after loading the view from its nib. } - +-(void)viewWillAppear:(BOOL)animated +{ + [super viewWillAppear:animated]; + self.navigationController.navigationBarHidden = YES; +} - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated. @@ -34,4 +39,91 @@ } */ +- (IBAction)qqLoginBtnClick:(id)sender +{ + UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQQ]; + + snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){ + + // 获取微博用户名、uid、token等 + + if (response.responseCode == UMSResponseCodeSuccess) { + + UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQQ]; + [MBProgressHUD hudWithView:self.view label:kLoginTips]; + DLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL); + [[UMSocialDataService defaultDataService] requestSnsInformation:UMShareToQQ completion:^(UMSocialResponseEntity *response){ + DLog(@"SnsInformation is %@",response.data); + if (response.data) { + [self loginWithOpenId:[response.data objectForKey:@"openid"] withName:[response.data objectForKey:@"screen_name"] withGender:[response.data objectForKey:@"gender"] withFigureUrl:[response.data objectForKey:@"profile_image_url"]]; + }else{ + [MBProgressHUD errorHudWithView:self.view label:kSSoErrorTips hidesAfter:1.0]; + } + }]; + + }}); + +} + +- (IBAction)weixinLoginBtnClick:(id)sender +{ + UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToWechatSession]; + + snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){ + + if (response.responseCode == UMSResponseCodeSuccess) { + [MBProgressHUD hudWithView:self.view label:kLoginTips]; + UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary]valueForKey:UMShareToWechatSession]; + + DLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL); + [[UMSocialDataService defaultDataService] requestSnsInformation:UMShareToWechatSession completion:^(UMSocialResponseEntity *response){ + DLog(@"SnsInformation is %@",response.data); + if (response.data) { + NSString* gender = @"男"; + if ([[response.data objectForKey:@"gender"] integerValue]==0) { + gender = @"女"; + } + [self loginWithOpenId:[response.data objectForKey:@"openid"] withName:[response.data objectForKey:@"screen_name"] withGender:gender withFigureUrl:[response.data objectForKey:@"profile_image_url"]]; + }else{ + [MBProgressHUD errorHudWithView:self.view label:kSSoErrorTips hidesAfter:1.0]; + } + }]; + } + + }); +} + +- (IBAction)closeBtnClick:(id)sender +{ + [self.navigationController dismissViewControllerAnimated:YES completion:nil]; +} +-(void)loginWithOpenId:(NSString*)openId withName:(NSString*)name withGender:(NSString*)gender withFigureUrl:(NSString*)figureUrl; +{ + if ([gender isEqualToString:@"1"] ) { + gender = @"男"; + } + if ([gender isEqualToString:@"0"]) { + gender = @"女"; + } + PropertyEntity* loginViewModel = [LoginViewModel requireLoginWithOpenId:openId withName:name withGender:gender withFigureUrl:figureUrl]; + [RequireEngine requireWithProperty:loginViewModel completionBlock:^(id viewModel) { + LoginViewModel* loginViewModel = (LoginViewModel*)viewModel; + [MBProgressHUD hideAllHUDsForView:self.view animated:YES]; + + if ([loginViewModel success]) { + + [AWordUser sharedInstance].isLogin = YES; + [AWordUser sharedInstance].uid = loginViewModel.uId; + [AWordUser sharedInstance].userName = name; + [AWordUser sharedInstance].userAvatar = figureUrl; + [AWordUser sharedInstance].userGender = gender; + [self closeBtnClick:nil]; + [[NSNotificationCenter defaultCenter] postNotificationName:kLoginSuccessNotificationName object:nil]; + }else{ + [MBProgressHUD errorHudWithView:self.view label:kSSoErrorTips hidesAfter:1.0]; + } + } failedBlock:^(NSError *error) { + + }]; +} @end diff --git a/Ash_AWord/ViewControllers/Login/LoginViewController.xib b/Ash_AWord/ViewControllers/Login/LoginViewController.xib index 2579e37..3d186f6 100644 --- a/Ash_AWord/ViewControllers/Login/LoginViewController.xib +++ b/Ash_AWord/ViewControllers/Login/LoginViewController.xib @@ -16,14 +16,14 @@ - + - + - - + + diff --git a/Ash_AWord/ViewControllers/Main/MainViewController.m b/Ash_AWord/ViewControllers/Main/MainViewController.m index eaf9523..75cf450 100644 --- a/Ash_AWord/ViewControllers/Main/MainViewController.m +++ b/Ash_AWord/ViewControllers/Main/MainViewController.m @@ -45,6 +45,9 @@ [[UITableViewHeaderFooterView appearance] setTintColor:[UIColor clearColor]]; [[UITabBar appearance] setTintColor:[UIColor blackColor]]; + + [UIBarButtonItem.appearance setTintColor:[UIColor blackColor]]; + [[UINavigationBar appearance] setTintColor:[UIColor blackColor]]; } - (void)didReceiveMemoryWarning diff --git a/Ash_AWord/ViewControllers/Main/MessageViewController.m b/Ash_AWord/ViewControllers/Main/MessageViewController.m index 0841e30..8993add 100644 --- a/Ash_AWord/ViewControllers/Main/MessageViewController.m +++ b/Ash_AWord/ViewControllers/Main/MessageViewController.m @@ -27,8 +27,17 @@ { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. -} + [self customViewDidLoad]; + + self.navigationItem.title = @"声音"; + self.navigationItem.leftBarButtonItem = [Ash_UIUtil leftBarButtonItemWithTarget:self action:@selector(publish) image:[UIImage imageNamed:@"navigationButtonPublish"] highlightedImage:[UIImage imageNamed:@"navigationButtonPublishClick"]]; +} +#pragma publish +-(void)publish +{ + +} - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; diff --git a/Ash_AWord/ViewControllers/Main/MyViewController.m b/Ash_AWord/ViewControllers/Main/MyViewController.m index b75e64c..e20e2ee 100644 --- a/Ash_AWord/ViewControllers/Main/MyViewController.m +++ b/Ash_AWord/ViewControllers/Main/MyViewController.m @@ -9,6 +9,8 @@ #import "MyViewController.h" #import "UMSocial.h" #import "LoginViewModel.h" +#import "LoginViewController.h" +#import "SetUpViewController.h" @interface MyViewController () { NSArray* cellTitleArr; @@ -31,19 +33,41 @@ { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. + [self customViewDidLoad]; + self.navigationItem.title = @"我的"; _tableView.delegate = self; _tableView.dataSource = self; + + + self.navigationItem.rightBarButtonItem = [Ash_UIUtil leftBarButtonItemWithTarget:self action:@selector(goSetUp) image:[UIImage imageNamed:@"mine-setting-icon"] highlightedImage:[UIImage imageNamed:@"mine-setting-icon-click"]]; + + //注册通知的观察者 + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess) name:kLoginSuccessNotificationName object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(loginSuccess) name:kLogoutSuccessNotificationName object:nil]; } +-(void)goSetUp +{ + SetUpViewController* setUpViewController = [[SetUpViewController alloc] init]; + setUpViewController.hidesBottomBarWhenPushed = YES; + [self.navigationController pushViewController:setUpViewController animated:YES]; +} +-(void)loginSuccess +{ + [self.tableView reloadData]; +} #pragma mark UITableViewDelegate -(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { - return 5; + return 2; } -(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (section == 1) { + return 2; + } return 1; } -(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath @@ -56,25 +80,28 @@ switch (indexPath.section) { case 0: { - cell.textLabel.text = @"登录"; + if ([AWordUser sharedInstance].isLogin) { + cell.textLabel.text = [AWordUser sharedInstance].userName; + [cell.imageView sd_setImageWithURL:[NSURL URLWithString:[AWordUser sharedInstance].userAvatar] placeholderImage:[UIImage imageNamed:@"defaultUserIcon"]]; + + }else{ + cell.textLabel.text = @"登录"; + [cell.imageView setImage:[UIImage imageNamed:@"defaultUserIcon"]]; + } + } break; case 1: { - cell.textLabel.text = @"我发表的文字"; + if (indexPath.row == 0 ) { + cell.textLabel.text = @"我发表的图片"; + } + if (indexPath.row == 1) { + cell.textLabel.text = @"我发表的声音"; + } } break; case 2: - { - cell.textLabel.text = @"我发表的声音"; - } - break; - case 3: - { - cell.textLabel.text = @"清楚缓存"; - } - break; - case 4: { cell.textLabel.text = @"推荐给朋友"; } @@ -90,27 +117,12 @@ switch (indexPath.section) { case 0: { - UMSocialSnsPlatform *snsPlatform = [UMSocialSnsPlatformManager getSocialPlatformWithName:UMShareToQQ]; - - snsPlatform.loginClickHandler(self,[UMSocialControllerService defaultControllerService],YES,^(UMSocialResponseEntity *response){ - - // 获取微博用户名、uid、token等 - - if (response.responseCode == UMSResponseCodeSuccess) { - - UMSocialAccountEntity *snsAccount = [[UMSocialAccountManager socialAccountDictionary] valueForKey:UMShareToQQ]; - [MBProgressHUD hudWithView:self.view label:@"登录中"]; - NSLog(@"username is %@, uid is %@, token is %@ url is %@",snsAccount.userName,snsAccount.usid,snsAccount.accessToken,snsAccount.iconURL); - [[UMSocialDataService defaultDataService] requestSnsInformation:UMShareToQQ completion:^(UMSocialResponseEntity *response){ - NSLog(@"SnsInformation is %@",response.data); - if (response.data) { - [self loginWithOpenId:[response.data objectForKey:@"openid"] withName:[response.data objectForKey:@"screen_name"] withGender:[response.data objectForKey:@"gender"] withFigureUrl:[response.data objectForKey:@"profile_image_url"]]; - }else{ - [MBProgressHUD errorHudWithView:self.view label:@"信息获取失败,重新授权" hidesAfter:1.0]; - } - }]; - - }}); + if (![AWordUser sharedInstance].isLogin) + { + LoginViewController* loginViewController = [[LoginViewController alloc] init]; + [self.navigationController presentViewController:[[UINavigationController alloc] initWithRootViewController:loginViewController] animated:YES completion:nil]; + } + } break; @@ -119,16 +131,7 @@ } } --(void)loginWithOpenId:(NSString*)openId withName:(NSString*)name withGender:(NSString*)gender withFigureUrl:(NSString*)figureUrl; -{ - PropertyEntity* loginViewModel = [LoginViewModel requireLoginWithOpenId:openId withName:name withGender:gender withFigureUrl:figureUrl]; - [RequireEngine requireWithProperty:loginViewModel completionBlock:^(id viewModel) { - LoginViewModel* loginViewModel = (LoginViewModel*)viewModel; - - } failedBlock:^(NSError *error) { - - }]; -} + - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; diff --git a/Ash_AWord/ViewControllers/Main/MyViewController.xib b/Ash_AWord/ViewControllers/Main/MyViewController.xib index 69797d9..dd2be47 100644 --- a/Ash_AWord/ViewControllers/Main/MyViewController.xib +++ b/Ash_AWord/ViewControllers/Main/MyViewController.xib @@ -18,7 +18,7 @@ - + diff --git a/Ash_AWord/ViewControllers/Main/NoteViewController.h b/Ash_AWord/ViewControllers/Main/NoteViewController.h index 0189eaa..1c5bae4 100644 --- a/Ash_AWord/ViewControllers/Main/NoteViewController.h +++ b/Ash_AWord/ViewControllers/Main/NoteViewController.h @@ -7,7 +7,9 @@ // #import "ViewController.h" +#import "BaseRefreshViewController.h" -@interface NoteViewController : ViewController +@interface NoteViewController : BaseRefreshViewController +@property (weak, nonatomic) IBOutlet UITableView *tableView; @end diff --git a/Ash_AWord/ViewControllers/Main/NoteViewController.m b/Ash_AWord/ViewControllers/Main/NoteViewController.m index 79d513d..8f76be0 100644 --- a/Ash_AWord/ViewControllers/Main/NoteViewController.m +++ b/Ash_AWord/ViewControllers/Main/NoteViewController.m @@ -7,9 +7,14 @@ // #import "NoteViewController.h" - -@interface NoteViewController () - +#import "NotePublishViewController.h" +#import "NoteTableViewCell.h" +#import "NoteViewModel.h" +@interface NoteViewController () +{ + NSInteger _page; + NSMutableArray* _text_imageArr; +} @end @implementation NoteViewController @@ -19,6 +24,8 @@ self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil]; if (self) { // Custom initialization + _page = 1; + _text_imageArr = [[NSMutableArray alloc] init]; } return self; } @@ -27,8 +34,135 @@ { [super viewDidLoad]; // Do any additional setup after loading the view from its nib. + [self customViewDidLoad]; + + self.navigationItem.title = @"文字"; + self.navigationItem.leftBarButtonItem = [Ash_UIUtil leftBarButtonItemWithTarget:self action:@selector(publish) image:[UIImage imageNamed:@"navigationButtonPublish"] highlightedImage:[UIImage imageNamed:@"navigationButtonPublishClick"]]; + + [self headerRereshing]; } +#pragma mark MJRefreshDelegate +-(void)headerRereshing +{ + [_text_imageArr removeAllObjects]; + _page=1; + [self loadData]; +} +-(void)footerRereshing +{ + _page++; + [self footerEndRefreshing]; +} +-(void)loadData +{ + PropertyEntity* pro = [NoteViewModel requireWithOrder_by:Order_by_Time withPage:_page withPage_size:20]; + [RequireEngine requireWithProperty:pro completionBlock:^(id viewModel) { + + NoteViewModel* noteViewModel = (NoteViewModel*)viewModel; + if (noteViewModel.text_imagesArr.count<20) { + [self.tableView removeFooter]; + }else{ + [self.tableView addGifFooterWithRefreshingTarget:self refreshingAction:@selector(footerRereshing)]; + } + if (noteViewModel.text_imagesArr) { + [_text_imageArr addObjectsFromArray:noteViewModel.text_imagesArr]; + } + [self footerEndRefreshing]; + [self headerEndRefreshing]; + [self.tableView reloadData]; + + } failedBlock:^(NSError *error) { + [MBProgressHUD errorHudWithView:self.view label:kNetworkErrorTips hidesAfter:1.0]; + [self footerEndRefreshing]; + [self headerEndRefreshing]; + }]; +} +#pragma mark UITableViewDelegate +-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView{ + return _text_imageArr.count; +} +-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{ + return 1; +} +-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section +{ + return 0.1; +} +-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section +{ + return 10.0; +} +-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ + Text_Image* text_image = [_text_imageArr objectAtIndex:indexPath.section]; + return [NoteTableViewCell heightWith:text_image]; +// return 140; +} +-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + static NSString* cellIdentifier = @"cellIdentifier"; + NoteTableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; + if (!cell) { + UINib* nib = [UINib nibWithNibName:@"NoteTableViewCell" bundle:nil]; + [tableView registerNib:nib forCellReuseIdentifier:cellIdentifier]; + cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; + } + cell.selectionStyle = UITableViewCellSelectionStyleNone; + Text_Image* text_image = [_text_imageArr objectAtIndex:indexPath.section]; + [cell setText_Image:text_image]; + return cell; +} +#pragma mark publish +-(void)publish +{ + if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) { + UIActionSheet* actionSheet = [[UIActionSheet alloc] initWithTitle:nil delegate:self cancelButtonTitle:@"取消" destructiveButtonTitle:nil otherButtonTitles:@"拍照",@"从手机相册选择", nil]; + actionSheet.actionSheetStyle = UIActionSheetStyleBlackOpaque; + [actionSheet showFromTabBar:self.tabBarController.tabBar]; + }else{ + [self actionSheet:nil clickedButtonAtIndex:1]; + } + +} + +#pragma mark UIActonSheetDelegate +-(void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex +{ + UIImagePickerController* picker = [[UIImagePickerController alloc] init]; + picker.allowsEditing = YES; + picker.delegate = self; + if (buttonIndex == 0) { + picker.sourceType = UIImagePickerControllerSourceTypeCamera; + } + if (buttonIndex == 1) { + picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; + } + [self presentViewController:picker animated:YES completion:nil]; + +} +#pragma mark UIImagePickerControllerDelegate +-(void)imagePickerControllerDidCancel:(UIImagePickerController *)picker +{ + [picker dismissViewControllerAnimated: YES completion: ^(void){}]; + +} +-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info +{ + UIImage* image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; + if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) { + + UIImageWriteToSavedPhotosAlbum(image, nil, nil, nil); + } + // resize image + image = [Ash_UIUtil fixOrientation:image]; + image = [Ash_UIUtil compressImageDownToPhoneScreenSize:image]; + [picker dismissViewControllerAnimated:NO completion:nil]; + + NotePublishViewController* notePublishViewController = [[NotePublishViewController alloc] init]; + notePublishViewController.publishImage = image; + UINavigationController* nav = [[UINavigationController alloc] initWithRootViewController:notePublishViewController]; + [self presentViewController:nav animated:YES completion:nil]; +} - (void)didReceiveMemoryWarning { [super didReceiveMemoryWarning]; diff --git a/Ash_AWord/ViewControllers/Main/NoteViewController.xib b/Ash_AWord/ViewControllers/Main/NoteViewController.xib index 632d090..ac4a49a 100644 --- a/Ash_AWord/ViewControllers/Main/NoteViewController.xib +++ b/Ash_AWord/ViewControllers/Main/NoteViewController.xib @@ -1,11 +1,13 @@ - + - + + + @@ -13,9 +15,24 @@ + + + + + + - - + + + + + + + + + + + diff --git a/Ash_AWord/ViewControllers/My/SetUpViewController.h b/Ash_AWord/ViewControllers/My/SetUpViewController.h new file mode 100644 index 0000000..3027e1f --- /dev/null +++ b/Ash_AWord/ViewControllers/My/SetUpViewController.h @@ -0,0 +1,14 @@ +// +// SetUpViewController.h +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "ViewController.h" + +@interface SetUpViewController : ViewController +@property (weak, nonatomic) IBOutlet UITableView *tableView; + +@end diff --git a/Ash_AWord/ViewControllers/My/SetUpViewController.m b/Ash_AWord/ViewControllers/My/SetUpViewController.m new file mode 100644 index 0000000..63e89ab --- /dev/null +++ b/Ash_AWord/ViewControllers/My/SetUpViewController.m @@ -0,0 +1,138 @@ +// +// SetUpViewController.m +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "SetUpViewController.h" + +@interface SetUpViewController () + +@end + +@implementation SetUpViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view from its nib. + [self customViewDidLoad]; + self.navigationItem.title = @"设置"; + _tableView.dataSource = self; + _tableView.delegate = self; +} + +#pragma mark UITableViewDelegate +-(NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + return 1; +} +-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + return 5; +} +-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section +{ + return 20.0; +} +-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath +{ + return 44.0; +} +-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section +{ + return 100.0; +} +-(UIView*)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section +{ + if (![AWordUser sharedInstance].isLogin) { + return nil; + } + UIView* view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 100)]; + view.backgroundColor = [UIColor clearColor]; + UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom]; + [button addTarget:self action:@selector(lgout:) forControlEvents:UIControlEventTouchUpInside]; + [button setTitle:@"退出当前账号" forState:UIControlStateNormal]; + [button setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + [button setBackgroundColor:[UIColor redColor]]; + button.layer.cornerRadius = 5.0; + button.layer.masksToBounds = YES; + button.frame = CGRectMake(20, 25, kScreenWidth-40, 50); + [view addSubview:button]; + return view; +} +-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ + static NSString* cellIdentifier = @"cell"; + UITableViewCell* cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; + if (!cell) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier]; + } + switch (indexPath.row) { + case 0: + { + cell.textLabel.text = @"清除缓存"; + dispatch_async(dispatch_get_global_queue(0, 0), ^{ + SDImageCache *cache = [SDImageCache sharedImageCache]; + NSUInteger size = [cache getSize]; + dispatch_async(dispatch_get_main_queue(), ^{ + cell.detailTextLabel.text = size/1024 < 1024 ? [NSString stringWithFormat:@"%.2fKB",(float)size/1024.0]:[NSString stringWithFormat:@"%.2fMB",(float)size/(1024.0*1024.0)]; + }); + }); + + } + + break; + case 1: + cell.textLabel.text = @"推荐给朋友"; + break; + case 2: + { + cell.textLabel.text = @"当前版本"; + NSDictionary *infoDictionary = [[NSBundle mainBundle] infoDictionary]; + NSString *app_Version = [infoDictionary objectForKey:@"CFBundleShortVersionString"]; + NSString *buildVersion = [infoDictionary objectForKey:@"CFBundleVersion"]; + NSString *version = [NSString stringWithFormat:@"v%@.%@",app_Version, buildVersion]; + cell.detailTextLabel.text = version; + } + break; + case 3: + cell.textLabel.text = @"关于我们"; + break; + case 4: + cell.textLabel.text = @"欢迎打5星好评"; + break; + + default: + break; + } + return cell; +} +-(void)lgout:(id)sender +{ + [AWordUser sharedInstance].isLogin = NO; + [AWordUser sharedInstance].uid = @""; + [[NSNotificationCenter defaultCenter] postNotificationName:kLogoutSuccessNotificationName object:nil]; + [self.navigationController popViewControllerAnimated:YES]; +} +-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ + [tableView deselectRowAtIndexPath:indexPath animated:YES]; +} +- (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/Ash_AWord/ViewControllers/My/SetUpViewController.xib b/Ash_AWord/ViewControllers/My/SetUpViewController.xib new file mode 100644 index 0000000..94374c2 --- /dev/null +++ b/Ash_AWord/ViewControllers/My/SetUpViewController.xib @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ash_AWord/ViewControllers/Note/NotePublishViewController.h b/Ash_AWord/ViewControllers/Note/NotePublishViewController.h new file mode 100644 index 0000000..0594882 --- /dev/null +++ b/Ash_AWord/ViewControllers/Note/NotePublishViewController.h @@ -0,0 +1,18 @@ +// +// NotePublishViewController.h +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "ViewController.h" +#import "UIPlaceHolderTextView.h" +@interface NotePublishViewController : ViewController + +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentHeight; +@property (weak, nonatomic) IBOutlet UIPlaceHolderTextView *contentTextView; +@property (weak, nonatomic) IBOutlet UIImageView *imageView; +@property (weak, nonatomic) IBOutlet UILabel *lengthLabel; +@property (nonatomic,strong)UIImage* publishImage; +@end diff --git a/Ash_AWord/ViewControllers/Note/NotePublishViewController.m b/Ash_AWord/ViewControllers/Note/NotePublishViewController.m new file mode 100644 index 0000000..429a444 --- /dev/null +++ b/Ash_AWord/ViewControllers/Note/NotePublishViewController.m @@ -0,0 +1,102 @@ +// +// NotePublishViewController.m +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "NotePublishViewController.h" +#import "NotePublishViewModel.h" +@interface NotePublishViewController () +{ + NSInteger _textLeft; +} +@end + +@implementation NotePublishViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view from its nib. + + self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"取消" style:UIBarButtonItemStyleDone target:self action:@selector(cancel)]; + self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"发布" style:UIBarButtonItemStyleDone target:self action:@selector(publish)]; + + _contentHeight.constant = kScreenHeight-216-64-60; + _textLeft = 500; + _contentTextView.placeholder = @"把你喜欢的好玩的图片发上来,配上美美的文字。so good!"; + _contentTextView.delegate = self; + _imageView.image = _publishImage; + + [_contentTextView becomeFirstResponder]; + +} +-(void)cancel +{ + UIAlertView* alertView = [[UIAlertView alloc] initWithTitle:nil message:@"退出此次编辑" delegate:self cancelButtonTitle:@"取消" otherButtonTitles:@"确认", nil]; + [alertView show]; +} +-(void)publish +{ + if (_contentTextView.text.length>0 && _publishImage) { + [MBProgressHUD hudWithView:self.view label:@"发布中"]; + PropertyEntity* notePublishViewModel = [NotePublishViewModel requireAddNote:_contentTextView.text withImage:_publishImage]; + [RequireEngine requireWithProperty:notePublishViewModel completionBlock:^(id viewModel) { + NotePublishViewModel* notePublishViewModel = (NotePublishViewModel*)viewModel; + [MBProgressHUD hideAllHUDsForView:self.view animated:YES]; + if ([notePublishViewModel success]) { + [MBProgressHUD checkHudWithView:self.view label:@"发布成功" hidesAfter:1.0]; + [self dismissViewControllerAnimated:YES completion:nil]; + }else{ + [MBProgressHUD errorHudWithView:self.view label:notePublishViewModel.errMessage hidesAfter:1.0]; + } + } failedBlock:^(NSError *error) { + [MBProgressHUD errorHudWithView:self.view label:kNetworkErrorTips hidesAfter:1.0]; + + }]; + } +} +#pragma mark UITextViewDelegate +-(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text +{ +#define MY_MAX 500 + if ((textView.text.length - range.length + text.length) > MY_MAX) + { + NSString *substring = [text substringToIndex:MY_MAX - (textView.text.length - range.length)]; + NSMutableString *lastString = [textView.text mutableCopy]; + [lastString replaceCharactersInRange:range withString:substring]; + textView.text = [lastString copy]; + return NO; + } + else + { + _textLeft = 500-(textView.text.length-range.length+text.length); + _lengthLabel.text = [NSString stringWithFormat:@"%ld",(long)_textLeft]; + return YES; + } +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} +#pragma mark UIAlertViewDelegate +-(void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex +{ + if (buttonIndex==1) + { + [self dismissViewControllerAnimated:YES completion:nil]; + } +} +/* +#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/Ash_AWord/ViewControllers/Note/NotePublishViewController.xib b/Ash_AWord/ViewControllers/Note/NotePublishViewController.xib new file mode 100644 index 0000000..9031455 --- /dev/null +++ b/Ash_AWord/ViewControllers/Note/NotePublishViewController.xib @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Ash_AWord/ViewModels/Note/NotePublishViewModel.h b/Ash_AWord/ViewModels/Note/NotePublishViewModel.h new file mode 100644 index 0000000..56b2741 --- /dev/null +++ b/Ash_AWord/ViewModels/Note/NotePublishViewModel.h @@ -0,0 +1,14 @@ +// +// NotePublishViewModel.h +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "BaseViewModel.h" + +@interface NotePublishViewModel : BaseViewModel + ++ (PropertyEntity *)requireAddNote:(NSString*)content withImage:(UIImage*)image; +@end diff --git a/Ash_AWord/ViewModels/Note/NotePublishViewModel.m b/Ash_AWord/ViewModels/Note/NotePublishViewModel.m new file mode 100644 index 0000000..638bb73 --- /dev/null +++ b/Ash_AWord/ViewModels/Note/NotePublishViewModel.m @@ -0,0 +1,29 @@ +// +// NotePublishViewModel.m +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "NotePublishViewModel.h" + +@implementation NotePublishViewModel + + ++(PropertyEntity*)requireAddNote:(NSString *)content withImage:(UIImage *)image +{ + PropertyEntity *pro = [[PropertyEntity alloc] init]; + pro.requireType = HTTPRequestTypeWithPOSTDATA; + proFile *file = [[proFile alloc] init]; + file.name = @"img"; + file.img = [NSArray arrayWithObject:image];; + pro.pFile = file; + pro.reqURL = @"rs/text_image/add"; + pro.responesOBJ = self.class; + content = [content stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + pro.pro = @{@"content": content, + }; + return pro; +} +@end diff --git a/Ash_AWord/ViewModels/Note/NoteViewModel.h b/Ash_AWord/ViewModels/Note/NoteViewModel.h new file mode 100644 index 0000000..0d1a0a4 --- /dev/null +++ b/Ash_AWord/ViewModels/Note/NoteViewModel.h @@ -0,0 +1,28 @@ +// +// NoteViewModel.h +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "BaseViewModel.h" +typedef enum { + Order_by_Time = 0, + Order_by_Good = 1, +}Order_by; + +@interface Text_Image : MTLModel +@property (nonatomic, strong)NSString* content; +@property (nonatomic, strong)NSString* createTime; +@property (nonatomic, strong)NSURL* imageUrl; +@property (nonatomic, strong)NSString* ownerId; +@property (nonatomic, assign)BOOL hasPraised; +@property (nonatomic, assign)NSInteger praiseCount; +@property (nonatomic, assign)NSInteger messageId; +@end +@interface NoteViewModel : BaseViewModel + +@property (nonatomic, strong)NSArray* text_imagesArr; ++(PropertyEntity*)requireWithOrder_by:(Order_by)order_by withPage:(NSInteger)page withPage_size:(NSInteger)page_size; +@end diff --git a/Ash_AWord/ViewModels/Note/NoteViewModel.m b/Ash_AWord/ViewModels/Note/NoteViewModel.m new file mode 100644 index 0000000..449cf66 --- /dev/null +++ b/Ash_AWord/ViewModels/Note/NoteViewModel.m @@ -0,0 +1,60 @@ +// +// NoteViewModel.m +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "NoteViewModel.h" +@implementation Text_Image ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"content": @"content", + @"createTime": @"createTime", + @"hasPraised" : @"hasPraised", + @"messageId": @"id", + @"imageUrl" : @"imageUrl", + @"ownerId" : @"ownerId", + @"praiseCount": @"praiseCount", + }; +} ++ (NSValueTransformer *)imageUrlJSONTransformer { + return [NSValueTransformer valueTransformerForName:MTLURLValueTransformerName]; +} +- (instancetype)initWithDictionary:(NSDictionary *)dictionaryValue error:(NSError **)error { + self = [super initWithDictionary:dictionaryValue error:error]; + if (self == nil) return nil; + self.content = [self.content stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; + // Store a value that needs to be determined locally upon initialization. + + return self; +} +@end + +@implementation NoteViewModel + ++ (NSDictionary *)JSONKeyPathsByPropertyKey { + return @{ + @"text_imagesArr": @"text_images", + }; +} ++ (NSValueTransformer *)text_imagesArrJSONTransformer{ + return [NSValueTransformer mtl_JSONArrayTransformerWithModelClass:Text_Image.class]; +} + ++(PropertyEntity*)requireWithOrder_by:(Order_by)order_by withPage:(NSInteger)page withPage_size:(NSInteger)page_size +{ + PropertyEntity *pro = [[PropertyEntity alloc] init]; + pro.requireType = HTTPRequestTypeWithGET; + pro.reqURL = @"rs/text_image/load_public"; + pro.responesOBJ = self.class; + pro.pro = @{@"order_by": [NSString stringWithFormat:@"%u",order_by], + @"page": [NSString stringWithFormat:@"%ld",page], + @"page_size": [NSString stringWithFormat:@"%ld",page_size], + }; + + return pro; +} + +@end diff --git a/Ash_AWord/Views/Note/NoteTableViewCell.h b/Ash_AWord/Views/Note/NoteTableViewCell.h new file mode 100644 index 0000000..1cfc674 --- /dev/null +++ b/Ash_AWord/Views/Note/NoteTableViewCell.h @@ -0,0 +1,29 @@ +// +// NoteTableViewCell.h +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import +@class Text_Image; +@interface NoteTableViewCell : UITableViewCell +@property (weak, nonatomic) IBOutlet UILabel *contentLabel; +@property (weak, nonatomic) IBOutlet UIImageView *avatar; +@property (weak, nonatomic) IBOutlet UILabel *userName; +@property (weak, nonatomic) IBOutlet UIImageView *contentImgView; +@property (weak, nonatomic) IBOutlet UIButton *goodBtn; +@property (weak, nonatomic) IBOutlet UIButton *badBtn; +@property (weak, nonatomic) IBOutlet UIButton *shareBtn; +@property (weak, nonatomic) IBOutlet NSLayoutConstraint *contentHeight; + + + +- (IBAction)goodBtnClick:(id)sender; +- (IBAction)badBtnClick:(id)sender; +- (IBAction)shareBtnClick:(id)sender; + +-(void)setText_Image:(Text_Image*)text_image; ++(CGFloat)heightWith:(Text_Image*)text_image; +@end diff --git a/Ash_AWord/Views/Note/NoteTableViewCell.m b/Ash_AWord/Views/Note/NoteTableViewCell.m new file mode 100644 index 0000000..cc99977 --- /dev/null +++ b/Ash_AWord/Views/Note/NoteTableViewCell.m @@ -0,0 +1,69 @@ +// +// NoteTableViewCell.m +// Ash_AWord +// +// Created by xmfish on 15/4/1. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "NoteTableViewCell.h" +#import "NoteViewModel.h" +@implementation NoteTableViewCell + +- (void)awakeFromNib { + // Initialization code + _contentLabel.font = [UIFont appFontOfSize:14.0]; +} + +- (void)setSelected:(BOOL)selected animated:(BOOL)animated { + [super setSelected:selected animated:animated]; + + // Configure the view for the selected state +} + +- (IBAction)goodBtnClick:(id)sender +{ +} + +- (IBAction)badBtnClick:(id)sender +{ +} + +- (IBAction)shareBtnClick:(id)sender +{ +} +-(void)setText_Image:(Text_Image *)text_image +{ + CGSize imageSize = _contentImgView.frame.size; + UIGraphicsBeginImageContextWithOptions(imageSize, 0, [UIScreen mainScreen].scale); + [[UIColor colorWithWhite:0.6 alpha:0.5] set]; + UIRectFill(CGRectMake(0, 0, imageSize.width, imageSize.height)); + UIImage *pressedColorImg = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + + + + UIFont *font = [UIFont appFontOfSize:14.0]; + CGSize size = CGSizeMake(300*[Ash_UIUtil currentScreenSizeRate],MAXFLOAT); + + CGRect labelRect = [text_image.content boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:nil]; + _contentHeight.constant = labelRect.size.height; + _contentLabel.text = text_image.content; + [_contentImgView sd_setImageWithURL:text_image.imageUrl placeholderImage:pressedColorImg]; + +} ++(CGFloat)heightWith:(Text_Image *)text_image +{ + UIFont *font = [UIFont appFontOfSize:14.0]; + CGSize size = CGSizeMake(300*[Ash_UIUtil currentScreenSizeRate],MAXFLOAT); + + CGRect labelRect = [text_image.content boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:font} context:nil]; + + CGSize imageSize = [Ash_UIUtil downloadImageSizeWithURL:text_image.imageUrl]; + CGFloat imageHeight = imageSize.height; + if (imageHeight!=0 &&imageSize.width!=0) { + imageHeight = imageHeight/(imageSize.width/(304*[Ash_UIUtil currentScreenSizeRate])); + } + return imageHeight+labelRect.size.height+85; +} +@end diff --git a/Ash_AWord/Views/Note/NoteTableViewCell.xib b/Ash_AWord/Views/Note/NoteTableViewCell.xib new file mode 100644 index 0000000..dec6f9a --- /dev/null +++ b/Ash_AWord/Views/Note/NoteTableViewCell.xib @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +