From 7fb95e470e1c5b637742ee819dd8d286c1a3115b Mon Sep 17 00:00:00 2001 From: Logan Date: Wed, 20 May 2015 09:39:04 +0800 Subject: [PATCH] 1.0 realse --- .DS_Store | Bin 0 -> 6148 bytes OpenShareDemo/.DS_Store | Bin 0 -> 6148 bytes .../openshare.xcodeproj/project.pbxproj | 89 +++- .../contents.xcworkspacedata | 0 OpenShareDemo/openshare/.DS_Store | Bin 0 -> 6148 bytes .../openshare/AppDelegate.h | 0 .../openshare/AppDelegate.m | 22 +- .../openshare/Base.lproj/LaunchScreen.xib | 0 .../openshare/Images.xcassets/.DS_Store | Bin 0 -> 6148 bytes .../AppIcon.appiconset/.DS_Store | Bin 0 -> 6148 bytes .../AppIcon.appiconset/Contents.json | 24 +- .../AppIcon.appiconset/logo-2.png | Bin 0 -> 2699 bytes .../AppIcon.appiconset/logo120.png | Bin 0 -> 4096 bytes .../AppIcon.appiconset/logo180.png | Bin 0 -> 5707 bytes .../AppIcon.appiconset/logo58.png | Bin 0 -> 1958 bytes .../AppIcon.appiconset/logo80.png | Bin 0 -> 2194 bytes .../AppIcon.appiconset/logo87.png | Bin 0 -> 2222 bytes .../LaunchImage.launchimage/.DS_Store | Bin 0 -> 6148 bytes .../LaunchImage.launchimage/Contents.json | 39 ++ .../Default-568h@2x.png | Bin 0 -> 24303 bytes .../LaunchImage.launchimage/Default@2x.png | Bin 0 -> 23819 bytes .../openshare/Info.plist | 41 +- OpenShareDemo/openshare/UIControl+Blocks.h | 17 + OpenShareDemo/openshare/UIControl+Blocks.m | 29 + OpenShareDemo/openshare/ViewController.h | 45 ++ OpenShareDemo/openshare/ViewController.m | 498 ++++++++++++++++++ OpenShareDemo/openshare/iconfont.ttf | Bin 0 -> 7384 bytes OpenShareDemo/openshare/logo.gif | Bin 0 -> 4229 bytes OpenShareDemo/openshare/logo.png | Bin 0 -> 2699 bytes {openshare => OpenShareDemo}/openshare/main.m | 0 OpenShareDemo/openshare/test.pdf | Bin 0 -> 28508 bytes .../openshareTests/Info.plist | 0 .../openshareTests/openshareTests.m | 0 README.md | 29 + .../openshare/Base.lproj/Main.storyboard | 25 - openshare/openshare/ViewController.h | 15 - openshare/openshare/ViewController.m | 27 - 37 files changed, 804 insertions(+), 96 deletions(-) create mode 100644 .DS_Store create mode 100644 OpenShareDemo/.DS_Store rename {openshare => OpenShareDemo}/openshare.xcodeproj/project.pbxproj (70%) rename {openshare => OpenShareDemo}/openshare.xcodeproj/project.xcworkspace/contents.xcworkspacedata (100%) create mode 100644 OpenShareDemo/openshare/.DS_Store rename {openshare => OpenShareDemo}/openshare/AppDelegate.h (100%) rename {openshare => OpenShareDemo}/openshare/AppDelegate.m (68%) rename {openshare => OpenShareDemo}/openshare/Base.lproj/LaunchScreen.xib (100%) create mode 100644 OpenShareDemo/openshare/Images.xcassets/.DS_Store create mode 100644 OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/.DS_Store rename {openshare => OpenShareDemo}/openshare/Images.xcassets/AppIcon.appiconset/Contents.json (79%) create mode 100644 OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo-2.png create mode 100644 OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo120.png create mode 100644 OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo180.png create mode 100644 OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo58.png create mode 100644 OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo80.png create mode 100644 OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo87.png create mode 100644 OpenShareDemo/openshare/Images.xcassets/LaunchImage.launchimage/.DS_Store create mode 100644 OpenShareDemo/openshare/Images.xcassets/LaunchImage.launchimage/Contents.json create mode 100644 OpenShareDemo/openshare/Images.xcassets/LaunchImage.launchimage/Default-568h@2x.png create mode 100644 OpenShareDemo/openshare/Images.xcassets/LaunchImage.launchimage/Default@2x.png rename {openshare => OpenShareDemo}/openshare/Info.plist (56%) create mode 100644 OpenShareDemo/openshare/UIControl+Blocks.h create mode 100644 OpenShareDemo/openshare/UIControl+Blocks.m create mode 100644 OpenShareDemo/openshare/ViewController.h create mode 100644 OpenShareDemo/openshare/ViewController.m create mode 100644 OpenShareDemo/openshare/iconfont.ttf create mode 100644 OpenShareDemo/openshare/logo.gif create mode 100644 OpenShareDemo/openshare/logo.png rename {openshare => OpenShareDemo}/openshare/main.m (100%) create mode 100644 OpenShareDemo/openshare/test.pdf rename {openshare => OpenShareDemo}/openshareTests/Info.plist (100%) rename {openshare => OpenShareDemo}/openshareTests/openshareTests.m (100%) delete mode 100644 openshare/openshare/Base.lproj/Main.storyboard delete mode 100644 openshare/openshare/ViewController.h delete mode 100644 openshare/openshare/ViewController.m diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..c7c11506030502337638d854e70abf79c9ea10b7 GIT binary patch literal 6148 zcmeH~-D=w~6vvO+Y;#fu9^0U>8{HOik*pnIcV3oVjs-kg%33mOHbmgrA$Dd)2>5!B zvG2zil_&V0YcM5VdH*57K9>Z0s)eu<6E z#*Le|yk={Q9{*13I2`9ySVrZn=tt96rljLUIe!?HG}muYpXUKgu8qQ zH?wdz6k%q^@ulewBCyIi6JP@832fS;Pv`%$%kTf^gSf;5n81HUKr{y7ppQ#(XY0!1 w=&Y5PUSlGoezjE-f|)yxjYCKAHYQ`(Cdok!oYq#c2919N3S5dKDcD0m5Y@wiVQ^bJCZ4^VpWT1mtr#ssy{V|)i+%s29znN=Fhp?DCH z8QA$IvorhiL3Vcl$a2>#fC9jrO;OaC5Oq&>o#fydQEZH7Y;l7p+~RU#pugzSwV$Iy z&ow{daQ%DK^f&bP+);=7hr7kP?%LkAA;s$W%(knlX7^G9@2_vymVe}&ZP)xTv)>-B zc4L!<3I>9KU?3O>2FL*KY?b+$W9VQY7zhTw7|`<}u_=}r2S+NDDew$>7w zlQNbW2S@f$#8Zi$D!IfEPp3cSxH9A5=;@GLd`O=8vv?7ko#Q79hm?+?gMnaR%)qIC z7JC0*@t2t_^2aIh6$}Ie|BL~dRqJZWP361w+xGOXO>7%B6^$FzpwJ#Y0{Efl$c1%! be^Q%qWyZl#M^V3}6XPLZgoFwPeu04x^`t$2 literal 0 HcmV?d00001 diff --git a/openshare/openshare.xcodeproj/project.pbxproj b/OpenShareDemo/openshare.xcodeproj/project.pbxproj similarity index 70% rename from openshare/openshare.xcodeproj/project.pbxproj rename to OpenShareDemo/openshare.xcodeproj/project.pbxproj index a5992ec..763c149 100644 --- a/openshare/openshare.xcodeproj/project.pbxproj +++ b/OpenShareDemo/openshare.xcodeproj/project.pbxproj @@ -10,10 +10,19 @@ B66BF3B31B0C137E0082F8D6 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = B66BF3B21B0C137E0082F8D6 /* main.m */; }; B66BF3B61B0C137E0082F8D6 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B66BF3B51B0C137E0082F8D6 /* AppDelegate.m */; }; B66BF3B91B0C137E0082F8D6 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = B66BF3B81B0C137E0082F8D6 /* ViewController.m */; }; - B66BF3BC1B0C137E0082F8D6 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B66BF3BA1B0C137E0082F8D6 /* Main.storyboard */; }; B66BF3BE1B0C137E0082F8D6 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B66BF3BD1B0C137E0082F8D6 /* Images.xcassets */; }; B66BF3C11B0C137E0082F8D6 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = B66BF3BF1B0C137E0082F8D6 /* LaunchScreen.xib */; }; B66BF3CD1B0C137E0082F8D6 /* openshareTests.m in Sources */ = {isa = PBXBuildFile; fileRef = B66BF3CC1B0C137E0082F8D6 /* openshareTests.m */; }; + B66BF3DB1B0C14480082F8D6 /* iconfont.ttf in Resources */ = {isa = PBXBuildFile; fileRef = B66BF3D71B0C14480082F8D6 /* iconfont.ttf */; }; + B66BF3DC1B0C14480082F8D6 /* logo.gif in Resources */ = {isa = PBXBuildFile; fileRef = B66BF3D81B0C14480082F8D6 /* logo.gif */; }; + B66BF3DD1B0C14480082F8D6 /* logo.png in Resources */ = {isa = PBXBuildFile; fileRef = B66BF3D91B0C14480082F8D6 /* logo.png */; }; + B66BF3DE1B0C14480082F8D6 /* test.pdf in Resources */ = {isa = PBXBuildFile; fileRef = B66BF3DA1B0C14480082F8D6 /* test.pdf */; }; + B66BF3ED1B0C16290082F8D6 /* OpenShare+QQ.m in Sources */ = {isa = PBXBuildFile; fileRef = B66BF3E31B0C16290082F8D6 /* OpenShare+QQ.m */; }; + B66BF3EE1B0C16290082F8D6 /* OpenShare+Renren.m in Sources */ = {isa = PBXBuildFile; fileRef = B66BF3E51B0C16290082F8D6 /* OpenShare+Renren.m */; }; + B66BF3EF1B0C16290082F8D6 /* OpenShare+Weibo.m in Sources */ = {isa = PBXBuildFile; fileRef = B66BF3E71B0C16290082F8D6 /* OpenShare+Weibo.m */; }; + B66BF3F01B0C16290082F8D6 /* OpenShare+Weixin.m in Sources */ = {isa = PBXBuildFile; fileRef = B66BF3E91B0C16290082F8D6 /* OpenShare+Weixin.m */; }; + B66BF3F11B0C16290082F8D6 /* OpenShare.m in Sources */ = {isa = PBXBuildFile; fileRef = B66BF3EB1B0C16290082F8D6 /* OpenShare.m */; }; + B66BF3F41B0C1AEB0082F8D6 /* UIControl+Blocks.m in Sources */ = {isa = PBXBuildFile; fileRef = B66BF3F31B0C1AEB0082F8D6 /* UIControl+Blocks.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -34,12 +43,28 @@ B66BF3B51B0C137E0082F8D6 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; B66BF3B71B0C137E0082F8D6 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = ""; }; B66BF3B81B0C137E0082F8D6 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = ""; }; - B66BF3BB1B0C137E0082F8D6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; B66BF3BD1B0C137E0082F8D6 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = ""; }; B66BF3C01B0C137E0082F8D6 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = Base; path = Base.lproj/LaunchScreen.xib; sourceTree = ""; }; B66BF3C61B0C137E0082F8D6 /* openshareTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = openshareTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; B66BF3CB1B0C137E0082F8D6 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; B66BF3CC1B0C137E0082F8D6 /* openshareTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = openshareTests.m; sourceTree = ""; }; + B66BF3D71B0C14480082F8D6 /* iconfont.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = iconfont.ttf; sourceTree = ""; }; + B66BF3D81B0C14480082F8D6 /* logo.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = logo.gif; sourceTree = ""; }; + B66BF3D91B0C14480082F8D6 /* logo.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = logo.png; sourceTree = ""; }; + B66BF3DA1B0C14480082F8D6 /* test.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; path = test.pdf; sourceTree = ""; }; + B66BF3E21B0C16290082F8D6 /* OpenShare+QQ.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OpenShare+QQ.h"; sourceTree = ""; }; + B66BF3E31B0C16290082F8D6 /* OpenShare+QQ.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "OpenShare+QQ.m"; sourceTree = ""; }; + B66BF3E41B0C16290082F8D6 /* OpenShare+Renren.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OpenShare+Renren.h"; sourceTree = ""; }; + B66BF3E51B0C16290082F8D6 /* OpenShare+Renren.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "OpenShare+Renren.m"; sourceTree = ""; }; + B66BF3E61B0C16290082F8D6 /* OpenShare+Weibo.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OpenShare+Weibo.h"; sourceTree = ""; }; + B66BF3E71B0C16290082F8D6 /* OpenShare+Weibo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "OpenShare+Weibo.m"; sourceTree = ""; }; + B66BF3E81B0C16290082F8D6 /* OpenShare+Weixin.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "OpenShare+Weixin.h"; sourceTree = ""; }; + B66BF3E91B0C16290082F8D6 /* OpenShare+Weixin.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "OpenShare+Weixin.m"; sourceTree = ""; }; + B66BF3EA1B0C16290082F8D6 /* OpenShare.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenShare.h; sourceTree = ""; }; + B66BF3EB1B0C16290082F8D6 /* OpenShare.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = OpenShare.m; sourceTree = ""; }; + B66BF3EC1B0C16290082F8D6 /* OpenShareHeader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = OpenShareHeader.h; sourceTree = ""; }; + B66BF3F21B0C1AEB0082F8D6 /* UIControl+Blocks.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIControl+Blocks.h"; sourceTree = ""; }; + B66BF3F31B0C1AEB0082F8D6 /* UIControl+Blocks.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIControl+Blocks.m"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -81,11 +106,14 @@ B66BF3AF1B0C137E0082F8D6 /* openshare */ = { isa = PBXGroup; children = ( + B66BF3E11B0C16290082F8D6 /* OpenShare */, + B66BF3D61B0C143D0082F8D6 /* assets */, B66BF3B41B0C137E0082F8D6 /* AppDelegate.h */, B66BF3B51B0C137E0082F8D6 /* AppDelegate.m */, B66BF3B71B0C137E0082F8D6 /* ViewController.h */, B66BF3B81B0C137E0082F8D6 /* ViewController.m */, - B66BF3BA1B0C137E0082F8D6 /* Main.storyboard */, + B66BF3F21B0C1AEB0082F8D6 /* UIControl+Blocks.h */, + B66BF3F31B0C1AEB0082F8D6 /* UIControl+Blocks.m */, B66BF3BD1B0C137E0082F8D6 /* Images.xcassets */, B66BF3BF1B0C137E0082F8D6 /* LaunchScreen.xib */, B66BF3B01B0C137E0082F8D6 /* Supporting Files */, @@ -119,6 +147,36 @@ name = "Supporting Files"; sourceTree = ""; }; + B66BF3D61B0C143D0082F8D6 /* assets */ = { + isa = PBXGroup; + children = ( + B66BF3D71B0C14480082F8D6 /* iconfont.ttf */, + B66BF3D81B0C14480082F8D6 /* logo.gif */, + B66BF3D91B0C14480082F8D6 /* logo.png */, + B66BF3DA1B0C14480082F8D6 /* test.pdf */, + ); + name = assets; + sourceTree = ""; + }; + B66BF3E11B0C16290082F8D6 /* OpenShare */ = { + isa = PBXGroup; + children = ( + B66BF3E21B0C16290082F8D6 /* OpenShare+QQ.h */, + B66BF3E31B0C16290082F8D6 /* OpenShare+QQ.m */, + B66BF3E41B0C16290082F8D6 /* OpenShare+Renren.h */, + B66BF3E51B0C16290082F8D6 /* OpenShare+Renren.m */, + B66BF3E61B0C16290082F8D6 /* OpenShare+Weibo.h */, + B66BF3E71B0C16290082F8D6 /* OpenShare+Weibo.m */, + B66BF3E81B0C16290082F8D6 /* OpenShare+Weixin.h */, + B66BF3E91B0C16290082F8D6 /* OpenShare+Weixin.m */, + B66BF3EA1B0C16290082F8D6 /* OpenShare.h */, + B66BF3EB1B0C16290082F8D6 /* OpenShare.m */, + B66BF3EC1B0C16290082F8D6 /* OpenShareHeader.h */, + ); + name = OpenShare; + path = ../../OpenShare; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -199,9 +257,12 @@ isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - B66BF3BC1B0C137E0082F8D6 /* Main.storyboard in Resources */, + B66BF3DB1B0C14480082F8D6 /* iconfont.ttf in Resources */, + B66BF3DD1B0C14480082F8D6 /* logo.png in Resources */, + B66BF3DC1B0C14480082F8D6 /* logo.gif in Resources */, B66BF3C11B0C137E0082F8D6 /* LaunchScreen.xib in Resources */, B66BF3BE1B0C137E0082F8D6 /* Images.xcassets in Resources */, + B66BF3DE1B0C14480082F8D6 /* test.pdf in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -220,8 +281,14 @@ buildActionMask = 2147483647; files = ( B66BF3B91B0C137E0082F8D6 /* ViewController.m in Sources */, + B66BF3EE1B0C16290082F8D6 /* OpenShare+Renren.m in Sources */, B66BF3B61B0C137E0082F8D6 /* AppDelegate.m in Sources */, + B66BF3F41B0C1AEB0082F8D6 /* UIControl+Blocks.m in Sources */, + B66BF3F11B0C16290082F8D6 /* OpenShare.m in Sources */, B66BF3B31B0C137E0082F8D6 /* main.m in Sources */, + B66BF3EF1B0C16290082F8D6 /* OpenShare+Weibo.m in Sources */, + B66BF3ED1B0C16290082F8D6 /* OpenShare+QQ.m in Sources */, + B66BF3F01B0C16290082F8D6 /* OpenShare+Weixin.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -244,14 +311,6 @@ /* End PBXTargetDependency section */ /* Begin PBXVariantGroup section */ - B66BF3BA1B0C137E0082F8D6 /* Main.storyboard */ = { - isa = PBXVariantGroup; - children = ( - B66BF3BB1B0C137E0082F8D6 /* Base */, - ); - name = Main.storyboard; - sourceTree = ""; - }; B66BF3BF1B0C137E0082F8D6 /* LaunchScreen.xib */ = { isa = PBXVariantGroup; children = ( @@ -349,7 +408,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = openshare/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -359,7 +420,9 @@ isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage; INFOPLIST_FILE = openshare/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 7.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -418,6 +481,7 @@ B66BF3D21B0C137E0082F8D6 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; B66BF3D31B0C137E0082F8D6 /* Build configuration list for PBXNativeTarget "openshareTests" */ = { isa = XCConfigurationList; @@ -426,6 +490,7 @@ B66BF3D51B0C137E0082F8D6 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/openshare/openshare.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/OpenShareDemo/openshare.xcodeproj/project.xcworkspace/contents.xcworkspacedata similarity index 100% rename from openshare/openshare.xcodeproj/project.xcworkspace/contents.xcworkspacedata rename to OpenShareDemo/openshare.xcodeproj/project.xcworkspace/contents.xcworkspacedata diff --git a/OpenShareDemo/openshare/.DS_Store b/OpenShareDemo/openshare/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8e24a6ade6ea407baf5dea38ce2f3339732c7e37 GIT binary patch literal 6148 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 literal 0 HcmV?d00001 diff --git a/OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo120.png b/OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo120.png new file mode 100644 index 0000000000000000000000000000000000000000..0501991f312ebf597ca67a4a0bfa99e86ece4a1f GIT binary patch literal 4096 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 kmW4J0ltP^ja5fA(g&Vk7N7j+pKLjV8( literal 0 HcmV?d00001 diff --git a/OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo180.png b/OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo180.png new file mode 100644 index 0000000000000000000000000000000000000000..f30e0c1c4a56a80b2e2df1604503bfb83185fc1e GIT binary patch literal 5707 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 GB>xW{44R(+ literal 0 HcmV?d00001 diff --git a/OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo58.png b/OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo58.png new file mode 100644 index 0000000000000000000000000000000000000000..cbb6d3ed78d1c361797e5eb70f9b74644df27399 GIT binary patch literal 1958 zcmaJ?eNYo;9uBowO4VKu7!{_t#%oJkNJtkS96fD6IV?jGuL$Z(YjfAc)g z?{ns@V5WVzG%z#}gTX9KNv5&T74&@pi_rftbR!g9Rw7B6$QC#UDdb2YOac$ihJX|i zCl_Kt9A43GCA1cUS@ahHI}^!dq=H;ngyZ-yIJroIvN4#o>*W#-R|p|MHk2z6Q?bU* zTUbEAqhd2ijA(`=5#kGyi>1((;xsn5Sjdg%Vb`w%*2+OtKm;KiKrYG?%Ro65`%D)^ z_dYWo3p|4$LMrz6pfVXuAQ6^A00|cp#f>Hq05Tazh$WH9gh+rGO(5c<(U%-Why_Vx zkVpZZKUmb8l$QgtX!Pg4&=VEQM-T~!#}^hB;tFGMurwD>h>wr=X%LA~C?ZN$Bt|&$ zD6wqKyaEl9aiszYB7nt!Pmz-i=Oa`s8tLyTh$Js$#j@vRLJNkMb0l~IF4~vUJdnZo z|4@tmh0TZPV2Z5z*7|xroB9jjzu#68& zfW$3iAcDc+3dBCcyU!R52ACq2AsjImN}*A)s0L0T;DK}!C1xX$PNoy$(7GqZ#*^rz z_yiImo=AyFj7=oXb7?R)Uj&Jfc`ok{E@eTkZx}=p)H4l|3JM?|T?&hUXGw#Cg=2|b zQ13aHw{R?^1-W=M7`(5w|JCYw6FNV>?Tf)h4=+X^5~K4jMF+d+eI5~m@hfAdvXid= zGGnm03OaR8w};a*F{*c%D@z|4=l*ej`oe>0>$xxWpCp<7nm0M)GCSPcFRC9*&N|0N zvzpcI4=o1KcF|Ss>3hbRv(G3!m z9-CEfb6HMSG>+Par)KZ#W~cY(TTWL^SezG!%?G;m2Yd9THz!LJlcrg>q(kf0>ux`` z&h~U&{+IcS0mGqQ{ZsB{hsz_ot{b0rJ~qwev}$%-QXlSnDrnR2u1sWn`($c!+@Qw3 z@Ag#dsO9_Lta(>8xosM)#rea8-Q)2NX=lA2&#cp9Ea2&_uDPLs0kz%H|Gkb09=~h& z^s@TvA(PkTbp3nGJ#DmiwW)1h$1djFu&Uzrq|xqb9&;9TO$x7SydJmZ_yODH2K%*U zd&eb@+4N-EX>@p96XRvyO_}65`j0n!t~6LB+o6^xQ(LIcAMe<{t@AqPY|ZE7UAmf| z>?NI=kDH!&z20{1PggLQm#R`|32gbpUry>W9&QNk{Ton=?avN58psb>9+ofK908{N>F`n&bZ^C7sBB-{vdpXls@1iT zjgcxrz`btw4p#G@13MS1mI3chz5iXAU)zP`G`!>vW;?xwT_Ldc=IAZD{4r6Uu#O&sSUDLh3fY`jOZWN*{lGvz~cC zF{D4V0E3%&-0^|AKlqqm5O5q=5fxD&w1PJ}Z_~ zmYzCT)B0$zc4SjWdsS+ZX>||uit_cavaFzsArTve`yD`JaY{h(wx1cKVocK;Z(ldP z_Rf)#^q~ACL7iXGofyh7w_-ITHnYC_SX5`r2J?xMO+kAU0zUKQ3G3hYXq1Wpm!Efi{a*hS Zn6SzvdzV;DL%y3cB`J;8ym4pwe*j?;jhz4h literal 0 HcmV?d00001 diff --git a/OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo80.png b/OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo80.png new file mode 100644 index 0000000000000000000000000000000000000000..7d30a634b0b028c05cb06dcf0adb59cbf1e2ede8 GIT binary patch literal 2194 zcmaJ@c~}!?9uA;Bo+}7etco#+D3x3gj#N}2P(ul&KovxUAsI}7WMUE|vI_zQQHlzP z^#Bo9uz<=HL2W!>Q7JwshZy8g!Q~2963Icx!A`8${bSvEX6F08-}Aoj?|kN&lm33+ ztyuc?QUn6Ag1mq(V$IV8EdHOg79$Aa?BHvjJ)h$U{bghZrn3ltlOlg=Em& zQ2PiJEQRd}(iwXaIACCcUl27RhU!W~?b?al!6(83Oppg4`OH`rm&kWRebgnwdxIH+ zLVkqsV%$)F1{F;4M|wgW5J^Bg*i*4M9MZ`NjdLV8IpMY=@mL%lgN1J=dz>SY;6%hb zBR^dz*c*oyMGPQ$fAR&N+)#8Lk4?m2;^X7d@eXK+a|nZTb#*mp;PLh_!k&AS#RK^E zEUxvu0tw_&ISe+B0kMzWNdHWM$^Ia+^zl)Vs*YEYo4^|F|WOE@m2diIC zv+s@`Z=8sz8rILwc2B5N8^(206Up`Ck=4V~=TAOQ1Ps_9eZw6(WmSI(B#ZYYBNYlTSvpT(URuA1B)z7G;DqUf# zL@%G7(`s}wiApHYyz3pF){5m?$>D>OfUmqTCrU8#;q)=Bcz8PRIJIV2UT~(URU%Db zJbkawE984`49?BX(GT1b!rv}FndBbC@0qy32=Cc#nqgLHdB13D>DISJIpzGA2U7HY zQ<+F4s8y9b5UR&sL~$olMX|ZgijjxOExQCiRCHe?AE;?;R3Nm+QW}Z`^_LUpmf5D{ z*rY|LzA*ZE$pY*4ehao;R^9-_USye_O(Y&EK(IQgdlL!z)vX&4Q$WXU8MMZ-as8e5 znRlK|8k?A6>DjTZ4Z|f7=D~}yXBKuRSr}7AR{o<1Z<3%UA}z5l`Bt(e&e!>Z!;xgM zi-*0}@i4^q*X^k$!JVo8&h{j;o>Q+8ryFg)>hO4Zxl0T6Teh^~e_QS$jO+i$IuDF9 zeP}r=`b{}lw6dcm;jOD?&2|%Ob;|wa0d4p;6M-hU%(VCd*uO&HcCYpFvJ+iozh4WD z8GU&6A`#iiwiCF;w>R08Wxnv{?fyI5=InqH#5ZA`rDD-i(-DuusjuwV=^=HCLjzpl2P)l8lCd^pc8Viv?^Rume>|wE{VE3qRc4s zZO&n4Wr};dQU=$n1zNqIo}%5o`X zb#CqTWJ$&em5+~*YC{_BTA&u#IbJfhVwtOeux&OTm1xIRK!0^}mAK*UzC3B5nH^_G zG^J^P#yBjaXRac;zt-nlW35)ci`bZ~TF1AqM{IDvSJxzH>oxo(kiGm!6&?|({{bYR B_$vSa literal 0 HcmV?d00001 diff --git a/OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo87.png b/OpenShareDemo/openshare/Images.xcassets/AppIcon.appiconset/logo87.png new file mode 100644 index 0000000000000000000000000000000000000000..39215189afea9a4620dd1e2e666712e2c8fefdff GIT binary patch literal 2222 zcmaJ@c~}$I7LQL`Dr$v3)ViQC;QmNRfIuSP!-PoCP#UP9BJG$A5+RwG3=*JJ+*uT5 z{Xkrwl=>=&h%6BlaRUTYq@c(y5E2Ms2_Xpy;Z3aA_s8SSH#7I%^PS)C{O&pD&Np%1 zUON_bjuR3bD6;6V=01v6Y$fkAWF zE*L)thAo3n0fRXnkpj>s(#w|>8Nwp5G22|x<2Gzy)CdE#ijqgk+Hm<|8i|nH$YG z4Em!B9O8ocQK9Hun|V^U_fNU z6I#tMP(dL}z~RFjh=(>Z0tcWl*ad?q{c{Uk{%2aA@Kc(QgyBR0ABV@<8n-m#$YA_` zS1$Lnw-9E6f9d_7#6sT)K8Rz2LMTkYLJAjTWemk9Qv@IYLjqq23Z2QKcQ6D)!eEGx zruY!i8yNtL!!sH-eMB%AWI9g>13VT;r@CMe4lIYmCcAB?IS||(9cg$cB=7F_BnO%U z$;|;zA~@Pn>?sa2SSrK{ohCY*bH1g5}67LI7dJ>O#pGxA2&_r%&x^@ zR=!VI_Uu}Svtn_G7@V=R|5fT46VgA%>F35p7N1)mLqIS zU5UXkZP02j)(;QEfLdn|h^5kTU5i|MymC-BuFt4bq}M9i6xyZ%%}8`;!0kSXQa9Q3 z>Pfe1Pj2t&C-M=^)V=r0=!XO27th^q9}l}P%WWRJ`f7x8ufL*GrBLg08b`0c9ywAb zOM9V6sZl7?<1~7MYI167ba+ZG`!G8Bc2Jw}Og?)0NKNlV%%eeZ+c>vGdZ?&B_NiQ{ zoieDDox_u3@lkv8`fB^sRXr1xU8?bGsX>MPgWoybY8ul|8E*bDdZBu#cT{(yVdTgB zzTcZhrAl49VzNQ1kx%Fi8udsxnE!U{r@Hxy-pezzlyBTDs?5LN>HYU5bPEey`4_KtDXBh% z0cJSoyLaCxN}eT?qmR%J_AM_m-uoFvYaY!oB}xbk`el?;B$ zuhmhTuB?noG&B9pU1)W99@oVted{`w`M^c-o)#Vu$uXj1d_EVCxQ4&^C%o^a;aQmtv;rbKWx-iX+KII0kd&3xcW-`uw~lc=AeK~g zwip83dV37j5*={qJZ7RatHtb>pan}`o+=v1V>K}wFG?bQEKKkUt-ysQFjEFzRNw`| zEbr!@vb>d+8^YHwjM=eQ;=LjAwDp_4fjqm)MCn?eEp(4`ipkGyH0D;>u`aV8IByST z`?pFye3^k^uU?mtyX-pwe=Crk@Xh+y--6uAp?N0ZC(m6tJiaB}&TUUmB4J76{!l-B zQxnRhleukh&%HxvI7MWxiF8Dz+=pN;p_lX_+i;-?&d1RVuz=eWdIw3A-T7^yS{2 zy6eHFn~AG7?=H+q*0)*4-bpxV?(^1UzVj7O@Z6(6H&Re_x!_Jg#%O#?Qt6zD!hx>x2*UuO=tWIbmtP zx<{}oZMtq~trf*L^2Xv7Tde&|BE+drS_>i$Exd8_)QOc~!bMYyzy=%thrtOaR zK98ja3rSAIz?s_9^C=CQ{rNYmH>@cc%*z;#&Od56+PPuPZa-I6_LyU5M<$uE?0Mep zBc4u$I#|m z`sM79*`@69Av5;%H`lt#u4OOyS8hYc)MHKakF% k`58GtZ579&Y#yOX1Lq%&yV9F%{DYvodr@z1|LORD0G%})$^ZZW literal 0 HcmV?d00001 diff --git a/OpenShareDemo/openshare/Images.xcassets/LaunchImage.launchimage/.DS_Store b/OpenShareDemo/openshare/Images.xcassets/LaunchImage.launchimage/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 GIT binary patch literal 6148 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 JH>lY~{sYUd-;V$Q literal 0 HcmV?d00001 diff --git a/OpenShareDemo/openshare/Images.xcassets/LaunchImage.launchimage/Default@2x.png b/OpenShareDemo/openshare/Images.xcassets/LaunchImage.launchimage/Default@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..97a0b08deaffbd7ec38c1fd22b164e9271afbd2e GIT binary patch literal 23819 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

$3lql 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 6.0 CFBundleName - $(PRODUCT_NAME) + Open Share CFBundlePackageType APPL CFBundleShortVersionString @@ -24,8 +24,8 @@ UILaunchStoryboardName LaunchScreen - UIMainStoryboardFile - Main + + UIRequiredDeviceCapabilities armv7 @@ -33,15 +33,40 @@ UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad UIInterfaceOrientationPortrait - UIInterfaceOrientationPortraitUpsideDown - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight + + + CFBundleURLTypes + + + CFBundleURLName + OpenShare + CFBundleURLSchemes + + +wxd930ea5d5a258f4f + +tencent1103194207 +tencent1103194207.content +QQ41C1685F + +wb402180334 + +renrenshare228525 + +fb776442542471056 + + + + + +UIAppFonts + + iconfont.ttf + diff --git a/OpenShareDemo/openshare/UIControl+Blocks.h b/OpenShareDemo/openshare/UIControl+Blocks.h new file mode 100644 index 0000000..046e22f --- /dev/null +++ b/OpenShareDemo/openshare/UIControl+Blocks.h @@ -0,0 +1,17 @@ +// +// UIControl+Blocks.h +// +// Created by AvdLee on 05/08/14. +// Copyright (c) 2014 A.Lee. All rights reserved. +// + +#import +#import + +typedef void (^ActionBlock)(id sender); + +@interface UIControl (Blocks) + +- (void)addEventHandler:(ActionBlock)handler forControlEvents:(UIControlEvents)controlEvents; + +@end diff --git a/OpenShareDemo/openshare/UIControl+Blocks.m b/OpenShareDemo/openshare/UIControl+Blocks.m new file mode 100644 index 0000000..06143db --- /dev/null +++ b/OpenShareDemo/openshare/UIControl+Blocks.m @@ -0,0 +1,29 @@ +// +// UIControl+Blocks.m +// +// Created by AvdLee on 05/08/14. +// Copyright (c) 2014 A.Lee. All rights reserved. +// + +#import "UIControl+Blocks.h" + +static char UIButtonHandlerKey; + +@implementation UIControl (Blocks) + +- (void)addEventHandler:(ActionBlock)handler forControlEvents:(UIControlEvents)controlEvents +{ + objc_setAssociatedObject(self, &UIButtonHandlerKey, handler, OBJC_ASSOCIATION_COPY_NONATOMIC); + [self addTarget:self action:@selector(callActionHandler:) forControlEvents:controlEvents]; +} + + +- (void)callActionHandler:(id)sender +{ + ActionBlock handler = (ActionBlock)objc_getAssociatedObject(self, &UIButtonHandlerKey); + if (handler) { + handler(sender); + } +} + +@end diff --git a/OpenShareDemo/openshare/ViewController.h b/OpenShareDemo/openshare/ViewController.h new file mode 100644 index 0000000..1cce983 --- /dev/null +++ b/OpenShareDemo/openshare/ViewController.h @@ -0,0 +1,45 @@ +// +// ViewController.h +// openshare +// +// Created by LiuLogan on 15/5/20. +// Copyright (c) 2015年 OpenShare http://openshare.gfzj.us/. All rights reserved. +// + +#import + +#define calcYFrom(view) (view.frame.size.height+view.frame.origin.y) +#define calcXFrom(view) (view.frame.size.width+view.frame.origin.x) +//NavBar高度 +#define NavigationBar_HEIGHT 44 +//获取屏幕 宽度、高度 +#define SCREEN_WIDTH ([UIScreen mainScreen].bounds.size.width) +#define SCREEN_HEIGHT ([UIScreen mainScreen].bounds.size.height) +#define MARGIN_LEFT 10 +#define MARGIN_BOTTOM self.tabBarController.tabBar.frame.size.height +#define MARGIN_TOP (self.navigationController.navigationBar.frame.size.height+[[UIApplication sharedApplication]statusBarFrame].size.height) +#define CONTENT_WIDTH ([UIScreen mainScreen].bounds.size.width-2*MARGIN_LEFT) +#define CONTENT_HEIGHT (SCREEN_HEIGHT-MARGIN_BOTTOM-MARGIN_TOP) + +//重写NSLog,Debug模式下打印日志和当前行数 +#if DEBUG +#define NSLog(FORMAT, ...) fprintf(stderr,"\nfunction:%s line:%d\n%s\n", __FUNCTION__, __LINE__, [[NSString stringWithFormat:FORMAT, ##__VA_ARGS__] UTF8String]); +#else +#define NSLog(FORMAT, ...) nil +#endif + + +#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] + +//DEBUG 模式下打印日志,当前行 并弹出一个警告 +#ifdef DEBUG +# define ULog(fmt, ...) { UIAlertView *alert = [[UIAlertView alloc] initWithTitle:[NSString stringWithFormat:@"%s\n [Line %d] ", __PRETTY_FUNCTION__, __LINE__] message:[NSString stringWithFormat:fmt, ##__VA_ARGS__] delegate:nil cancelButtonTitle:@"Ok" otherButtonTitles:nil]; [alert show]; } +#else +# define ULog(...) +#endif + +@interface ViewController : UIViewController + + +@end + diff --git a/OpenShareDemo/openshare/ViewController.m b/OpenShareDemo/openshare/ViewController.m new file mode 100644 index 0000000..f399575 --- /dev/null +++ b/OpenShareDemo/openshare/ViewController.m @@ -0,0 +1,498 @@ +// +// ViewController.m +// openshare +// +// Created by LiuLogan on 15/5/20. +// Copyright (c) 2015年 OpenShare http://openshare.gfzj.us/. All rights reserved. +// + +#import "ViewController.h" +#import "UIControl+Blocks.h" +#import "OpenShareHeader.h" + +@interface ViewController () + +@end + +@implementation ViewController{ + NSDictionary *icons; + UIScrollView *panel; + NSData *testImage,*testThumbImage,*testGifImage,*testFile; +} + +- (void)viewDidLoad { + [super viewDidLoad]; + //初始化测试数据 + testImage = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"Default@2x" ofType:@"png"]]; + testThumbImage= [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"logo" ofType:@"png"]]; + testGifImage= [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"logo" ofType:@"gif"]]; + testFile= [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"test" ofType:@"pdf"]]; + + UIColor *blue=UIColorFromRGB(0x4799dd); + // UIColor *red=UIColorFromRGB(0xe3372b); + + //按钮图标。 curl http://at.alicdn.com/t/font_1431516432_083878.css|pcregrep --om-separator='\":@\"\\U0000' -o1 -o2 '.icon-(.*?):before { content: "\\(.*?)"' |while read line;do echo "@\"${line}\",";done|sed 's/-/_/g' + + icons=@{@"weibo":@"\U0000e600", + @"weixin":@"\U0000e601", + @"qq":@"\U0000e602", + @"renren":@"\U0000e603",}; + + self.navigationItem.title=@"OpenShare 测试"; + self.view.backgroundColor=[UIColor whiteColor]; + + int i=0;int buttonWidth=SCREEN_WIDTH/icons.count-20; + if(buttonWidth>80){ + buttonWidth=80; + } + float fromX=SCREEN_WIDTH/2-icons.count*(buttonWidth+10)/2; + if (fromX<0) { + fromX=0; + } + for (NSString *icon in @[@"weibo",@"qq",@"weixin",@"renren"]/*对dictionary进行for-in,不能保证顺序*/) { + UIButton *btn=[UIButton buttonWithType:UIButtonTypeCustom]; + btn.layer.cornerRadius=buttonWidth/2; + btn.clipsToBounds=YES; + btn.frame=CGRectMake(SCREEN_WIDTH/2-buttonWidth/2, MARGIN_TOP+10, buttonWidth, buttonWidth); + btn.layer.borderColor=blue.CGColor; + btn.layer.borderWidth=1; + [btn setBackgroundImage:[self imageWithColor:[UIColor whiteColor]] forState:UIControlStateNormal]; + [btn setBackgroundImage:[self imageWithColor:blue] forState:UIControlStateSelected]; + [btn setTitleColor:blue forState:UIControlStateNormal]; + [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected]; + btn.titleLabel.font=[UIFont fontWithName:@"openshare" size:buttonWidth/2]; + [btn setTitle:icons[icon] forState:UIControlStateNormal]; + [self.view addSubview:btn]; + i++; + [btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside]; + btn.tag=i; + } + //big panel uiscrollview + float fromY=calcYFrom([self.view viewWithTag:1])+10; + panel=[[UIScrollView alloc] initWithFrame:CGRectMake(0,fromY , SCREEN_WIDTH, SCREEN_HEIGHT-fromY)]; + [self.view addSubview:panel]; + panel.hidden=YES; + panel.contentSize=CGSizeMake(SCREEN_WIDTH*(icons.count+1), SCREEN_HEIGHT-fromY); + panel.pagingEnabled=YES; + panel.scrollEnabled=NO; + //第一屏。一个logo + [panel addSubview:({ + UIImageView *imgView=[[UIImageView alloc] init]; + UIImage *img=[UIImage imageNamed:@"Default"]; + imgView.image=img; + imgView.frame=CGRectMake(panel.frame.size.width/2-img.size.width/2, panel.frame.size.height/2-img.size.height/2, img.size.width, img.size.height); + imgView; + })]; + + //测试分享的view + CGRect frame=CGRectMake(0, 10, SCREEN_WIDTH-fromX*2, panel.frame.size.height); + NSArray *views=@[[UIView new],[self sinaWeiboView:frame],[self qqView:frame],[self weixinView:frame],[self renrenView:frame]]; + for (int i=1; i<=icons.count; i++) { + UIView *view=views[i]; + view.tag=100+i; + view.frame=CGRectMake(i*SCREEN_WIDTH+fromX, view.frame.origin.y, view.frame.size.width,view.frame.size.height); + [panel addSubview:view]; + } + + [UIView animateWithDuration:2 delay:0.5 usingSpringWithDamping:YES initialSpringVelocity:20 options:UIViewAnimationOptionCurveEaseInOut animations:^{ + for (int i=1; i<=icons.count; i++) { + [self.view viewWithTag:i].frame=CGRectMake(fromX+(i-1)*(buttonWidth+10), MARGIN_TOP+10, buttonWidth, buttonWidth); + } + } completion:^(BOOL finished) { + panel.hidden=NO; + }]; + +} +-(UIButton*)button:(NSString*)title WithCenter:(CGPoint)center{ + UIButton *btn=[UIButton buttonWithType:UIButtonTypeSystem]; + [btn setTitle:title forState:UIControlStateNormal]; + [btn sizeToFit]; + btn.center=center; + return btn; +} +#pragma mark 新浪微博测试 +-(UIView*)sinaWeiboView:(CGRect)frame{ + UIView *ret=[[UIView alloc] initWithFrame:frame]; + UIButton *auth=[self button:@"登录" WithCenter:CGPointMake(frame.size.width/2, 40)]; + [ret addSubview:auth]; + [auth addEventHandler:^(id sender) { + [OpenShare WeiboAuth:@"all" redirectURI:@"http://openshare.gfzj.us/" Success:^(NSDictionary *message) { + ULog(@"微博登录成功:\n%@",message); + } Fail:^(NSDictionary *message, NSError *error) { + ULog(@"微博登录失败:\n%@\n%@",message,error); + }]; + } forControlEvents:UIControlEventTouchUpInside]; + + UIButton *textShare=[self button:@"分享纯文本" WithCenter:CGPointMake(auth.center.x, calcYFrom(auth)+40)]; + [ret addSubview:textShare]; + textShare.tag=1001; + [textShare addTarget:self action:@selector(weiboViewHandler:) forControlEvents:UIControlEventTouchUpInside]; + + UIButton *imgShare=[self button:@"分享图片" WithCenter:CGPointMake(auth.center.x, calcYFrom(textShare)+40)]; + [ret addSubview:imgShare]; + imgShare.tag=1002; + [imgShare addTarget:self action:@selector(weiboViewHandler:) forControlEvents:UIControlEventTouchUpInside]; + + UIButton *newsShare=[self button:@"分享新闻" WithCenter:CGPointMake(auth.center.x, calcYFrom(imgShare)+40)]; + [ret addSubview:newsShare]; + newsShare.tag=1003; + [newsShare addTarget:self action:@selector(weiboViewHandler:) forControlEvents:UIControlEventTouchUpInside]; + + return ret; +} +-(void)weiboViewHandler:(UIButton*)btn{ + OSMessage *message=[[OSMessage alloc]init]; + message.title=@"hello openshare (message.title)"; + if (btn.tag>=1002) { + message.image=testImage; + } + if (btn.tag==1003) { + message.link=@"http://openshare.gfzj.us/"; + } + [OpenShare shareToWeibo:message Success:^(OSMessage *message) { + ULog(@"分享到sina微博成功:\%@",message); + } Fail:^(OSMessage *message, NSError *error) { + ULog(@"分享到sina微博失败:\%@\n%@",message,error); + }]; +} +#pragma mark QQ分享/登录API使用 +-(UIView*)qqView:(CGRect)frame{ + UIView *ret=[[UIView alloc] initWithFrame:frame]; + UISegmentedControl *seg=[[UISegmentedControl alloc] initWithItems:@[@"登录",@"QQ好友",@"QQ空间",@"收藏",@"数据线"]]; + seg.tag=2002; + seg.center=CGPointMake(frame.size.width/2, 20); + seg.selectedSegmentIndex=0; + [ret addSubview:seg]; + + UIView *loginView=[[UIView alloc] initWithFrame:CGRectMake(0, 40, frame.size.width, frame.size.height-40)]; + loginView.backgroundColor=[UIColor whiteColor]; + UIButton *auth=[self button:@"QQ登录" WithCenter:CGPointMake(frame.size.width/2, 40)]; + [loginView addSubview:auth]; + [auth addEventHandler:^(id sender) { + [OpenShare QQAuth:@"get_user_info" Success:^(NSDictionary *message) { + ULog(@"QQ登录成功\n%@",message); + } Fail:^(NSDictionary *message, NSError *error) { + ULog(@"QQ登录失败\n%@\n%@",error,message); + }]; + } forControlEvents:UIControlEventTouchUpInside]; + UIButton *chat=[self button:@"和我聊天" WithCenter:CGPointMake(frame.size.width/2, calcYFrom(auth)+40)]; + [loginView addSubview:chat]; + [chat addEventHandler:^(id sender) { + [OpenShare chatWithQQNumber:@"393475141"]; + } forControlEvents:UIControlEventTouchUpInside]; + + UIButton *chatGroup=[self button:@"指定群聊天(必须是群成员)" WithCenter:CGPointMake(frame.size.width/2, calcYFrom(chat)+40)]; + [loginView addSubview:chatGroup]; + [chatGroup addEventHandler:^(id sender) { + [OpenShare chatInQQGroup:@"60623498"]; + } forControlEvents:UIControlEventTouchUpInside]; + + UIView *shareView=[[UIView alloc] initWithFrame:loginView.frame]; + shareView.backgroundColor=[UIColor whiteColor]; + OSMessage *message=[[OSMessage alloc] init]; + message.title=@"hello OpenShare(title)"; + NSArray *titles=@[@"分享文本消息",@"分享图片消息",@"分享新闻消息",@"分享音频消息",@"分享视频消息"]; + for (int i=0; i=2) { + msg.image=testImage; + msg.thumbnail=testThumbImage; + msg.desc=@"这里写的是msg.description"; + } + if(btn.tag==3){ + msg.link=@"http://sports.qq.com/a/20120510/000650.htm"; + }else if(btn.tag==4){ + msg.link=@"http://wfmusic.3g.qq.com/s?g_f=0&fr=&aid=mu_detail&id=2511915"; + msg.multimediaType=OSMultimediaTypeAudio; + }else if(btn.tag==5){ + msg.link=@"http://v.youku.com/v_show/id_XOTU2MzA0NzY4.html"; + msg.multimediaType=OSMultimediaTypeVideo; + } + switch (seg.selectedSegmentIndex) { + case 1: + { + [OpenShare shareToQQFriends:msg Success:^(OSMessage *message) { + ULog(@"分享到QQ好友成功:%@",msg); + } Fail:^(OSMessage *message, NSError *error) { + ULog(@"分享到QQ好友失败:%@\n%@",msg,error); + }]; + } + break; + + case 2: + { + [OpenShare shareToQQZone:msg Success:^(OSMessage *message) { + ULog(@"分享到QQ空间成功:%@",msg); + } Fail:^(OSMessage *message, NSError *error) { + ULog(@"分享到QQ空间失败:%@\n%@",msg,error); + }]; + } + break; + case 3: + { + [OpenShare shareToQQFavorites:msg Success:^(OSMessage *message) { + ULog(@"分享到QQ收藏成功:%@",msg); + } Fail:^(OSMessage *message, NSError *error) { + ULog(@"分享到QQ收藏失败:%@\n%@",msg,error); + }]; + } + break; + + case 4: + { + [OpenShare shareToQQDataline:msg Success:^(OSMessage *message) { + ULog(@"分享到QQ数据线成功:%@",msg); + } Fail:^(OSMessage *message, NSError *error) { + ULog(@"分享到QQ数据线失败:%@\n%@",msg,error); + }]; + } + break; + default: + break; + } + +} +#pragma mark 微信分享相关 +-(UIView*)weixinView:(CGRect)frame{ + UIView *ret=[[UIView alloc] initWithFrame:frame]; + UISegmentedControl *seg=[[UISegmentedControl alloc] initWithItems:@[@"登录",@"会话",@"朋友圈",@"收藏"]]; + seg.selectedSegmentIndex=0; + seg.tag=3003; + seg.center=CGPointMake(frame.size.width/2, 20); + [ret addSubview:seg]; + + NSArray *titles=@[@"发送Text消息",@"发送Photo消息",@"发送Link消息",@"发送Music消息",@"发送Video消息",@"发送App消息",@"发送非gif表情",@"发送gif表情",@"发送文件消息"]; + NSArray *fromX=@[@(frame.size.width/4),@(frame.size.width*3/4)]; + int fromY=calcYFrom(seg)+ 40; + for (int i=0; i30001) { + msg.desc=@"这里是msg.desc"; + } + + if (btn.tag==30002) { + //图片 + msg.image=testImage; + msg.thumbnail=testThumbImage; + }else if (btn.tag==30003) { + //link + msg.link=@"http://tech.qq.com/zt2012/tmtdecode/252.htm"; + msg.image=testThumbImage;//新闻类型的职能传缩略图就够了。 + }else if (btn.tag==30004) { + //Music + msg.mediaDataUrl=@"http://stream20.qqmusic.qq.com/32464723.mp3"; + msg.link=@"http://tech.qq.com/zt2012/tmtdecode/252.htm"; + msg.thumbnail=testThumbImage; + msg.multimediaType=OSMultimediaTypeAudio; + } + else if (btn.tag==30005) { + //video + msg.link=@"http://v.youku.com/v_show/id_XNTUxNDY1NDY4.html"; + msg.thumbnail=testThumbImage; + msg.multimediaType=OSMultimediaTypeVideo; + } + else if (btn.tag==30006) { + //app + msg.extInfo=@"app自己的扩展消息,当从微信打开app的时候,会传给app"; + msg.link=@"http://www.baidu.com/";//分享到朋友圈以后,微信就不会调用app了,跟news类型分享到朋友圈一样。 + msg.image=testImage; + msg.thumbnail=testThumbImage; + msg.multimediaType=OSMultimediaTypeApp; + } + else if (btn.tag==30007) { + //非gif表情/同图片。 + msg.image=testImage; + msg.thumbnail=testThumbImage; + }else if (btn.tag==30008) { + //gif表情/同图片,只是格式是gif。 + msg.image=testGifImage; + msg.thumbnail=testThumbImage; + }else if (btn.tag==30009) { + //file + msg.image=testFile; + msg.thumbnail=testThumbImage; + msg.title=@"test.pdf";//添加到收藏的时候,微信会根据文件名打开。fileExt信息丢失。微信的bug + msg.fileExt=@"pdf"; + msg.multimediaType=OSMultimediaTypeFile; + } + + + switch ([(UISegmentedControl*)[panel viewWithTag:3003] selectedSegmentIndex]) { + case 1: + [OpenShare shareToWeixinSession:msg Success:^(OSMessage *message) { + ULog(@"微信分享到会话成功:\n%@",message); + } Fail:^(OSMessage *message, NSError *error) { + ULog(@"微信分享到会话失败:\n%@\n%@",error,message); + }]; + break; + case 2: + [OpenShare shareToWeixinTimeline:msg Success:^(OSMessage *message) { + ULog(@"微信分享到朋友圈成功:\n%@",message); + } Fail:^(OSMessage *message, NSError *error) { + ULog(@"微信分享到朋友圈失败:\n%@\n%@",error,message); + }]; + break; + case 3: + [OpenShare shareToWeixinFavorite:msg Success:^(OSMessage *message) { + ULog(@"微信分享到收藏成功:\n%@",message); + } Fail:^(OSMessage *message, NSError *error) { + ULog(@"微信分享到收藏失败:\n%@\n%@",error,message); + }]; + break; + + default: + break; + } +} +#pragma mark 人人 +-(UIView*)renrenView:(CGRect)frame{ + UIView *ret=[[UIView alloc] initWithFrame:frame]; + UISegmentedControl *seg=[[UISegmentedControl alloc] initWithItems:@[@"聊天",@"新鲜事"]]; + seg.tag=3004; + seg.selectedSegmentIndex=0; + seg.center=CGPointMake(frame.size.width/2, 20); + [ret addSubview:seg]; + NSArray *titles=@[@"文本",@"图片",@"图文",@"语音",@"视频"]; + for (int i=0; im+T{{%L=>$z+;I+h1|p>BLgM zvwX;o?be=V#oc@Ex#ynuJ@;OS1QCVlI>~fpa`MEnwT_jSf%z5QrsE48-KW;hMuo ze+aFPUODva54io&#y`WZ?N(6?@k>&{=P8M~e{!o8zn~uB z2bMIMX}w3l#NB6hd18@Xrj4J;vUAI!v$8{fhe1!0+~AQ}UXSPV+q5-C{ zYG?%nfzz#9=x_XtZr!@|@kYjOKSJAPjJ}ZY;rGqYF6En%zZv+p`M(){{|_z_rC@)z z^i_D!NBc%I;3Z2WpCU;JX@(?899IB|0+CNs6_CjhHJt5dowT5?70K|ak`geKQdF2`XpTZ5!yHS@xb@&T^S^M^{l@b9WZ3|g zN8cMuW%)g+Ir@QLV<(njv?=sO&+0en_}&wt%&J>5{hvsJr z1AScwyARfP)_2ZDx*8(wvC-OiR%ls~GNrvD+1H!t>&;795lgDEx_F%_*;*zm+LAs{ zw59UWAyJ>w>f$}!{k@rb&1cHZVo2-mZ_A6eOq=NI9g&7acYLo9dlHQc(R5Q({**8p z+L}Ll^N94Uh_%?J*u>w zjMuiBH6gvBF=R(->%;>;4K&mS_hx>=E1qsWA>Wi31QKW#!m5 zLq(oI$U+Zptgf6nJ$+~M-UC`VD@;+}tiqx7%>vP=kB^9f{!Ck5(p1f-MeF0O10xbV zp9dPBFq*ssK&x$*Vs(fP5B2p9@HBK{b@lQ7ff1$8n*!c(5Vd815^3w&%anHQly&D*x&Iv!@O=^|W6<)6;jXrIL!Y)JOcHx7AFy zWm5V`#4iW*#zryT(3oy%mIUgFEZ6RhP7T)71*Go8Aydcbfp(@(Yq zqdw`;_6I+E^H(#+a%z+hd&6ole)7Pf zzC?2KdMI?nUJoA{I(T5PBe#EFvL(^p)SliKs>!BDR0PFN znWC;)^fXI|Izp6AWqSL2x;f;g=-%!i*l8@rp3a`U;0c^Q&8Veb4rSVIQ~5M`J<`0V z*7SYz`iUnN7M?iKRvIw_5iH@GKWRv%8iKJJe>m}4C%~Gue&LeX^J*S?XVJRPNv)U$Jd`b`tVZ^&xqt6RjExy>wlc;Oc~*L zpe7Lpgl~g<$HvK?W9LqOwmAK8E^IX>A~lk>r&XPNt!*F^X^FPi`rsZx#w|zw57`kP z7vH|)BVwICLBCB8(uc8j*XbHvrF&_G8Yo6}R7+7ZDTsA0dpmWUaFP&3aY~#NchRR1 zHv~f5D=v#m;vVrqaZ#+&4XV-?=_z`WeviI@GfNmjlj%A7GJT1jrKjl+=@01lNe4ee zjEF;GnEsSrqVGTkaH2R|4n~S zKc>H-AJGr#2lOiaHN8ULr@x}Vq(7%t=%$N3^h^3DNJr(tK08WZVe3UBzAEG&o^cbX zIfr1Bmro=^Q)7_~s3t9v1by^H(!oewBt^wOtSuuCwG~oTIxbMe40S9qT6o{{G1afq z40BMALlw19x}!m?h-Gm?%!(m#Py_`836=hfUZo$~@JyJN!V^e-WiYNV2SISY2qb#1yPqMNv_?WJSjgY6MK(2m}HlJf>-e z!{HjUrY2m2FCa5)hC%^VGyHztr)zk06>MZl1wWJ{jhUgsZ;3&1G6Skl^Z9fZ;}HU< zK)8%Lg@VCasOX?_Du{w61lGOc(=kI=)gTz|2?Pwk3Q|-I<|?U}<u82+ zpd}uBbRXFG!n)t52ZOpEH4M{l_=AB!Lt|qo7y@7zP~B4nvOJb3p%Uu{CupoIYMM|3 zy5H{)Kq+X(x^D>=FcjWm!4nLuWG-RIq)s@7bgH!1)}?5WKA@!DtMVf|?c- zLIE2ua-dfw7>xtWYKJ&oCB=`UEZm}DBI_*qkSeO_)1$SZf!p9Z{mKQaGE|>{J^L2hBp};{uL;{i=pjLLM~^CxW*O_V@L+^@}phZg zIm$HdfVlte-p(**>u#tVVR~iSt(tfAfFA!{E}5J%p*47JJV&jLR%~TX>n$*kiU}1=!wg zSfxoiv<)-$BPjAh;aO37d>fX)|LJX5rX$4nF{V*K^UG~mrN;&De~i~CDn7GzW$E&@ z)ymbSV@rz{@4Ga)c6ohr?dr;s)t&FO4qCgzfV+BfeYx(=uD)I5$)&5;F0Ng+xf(O3*Ut^ zSdRMec7wJH(A(vl1h=b@d(o3&fohBI5csa+-!k;!6U7=dyXa|QA^!J+UmokLm-c}! zhiF?g=s{QU?ejFt(G*~o%zEZ%1K%#pVE6%iQy5Qqy=Cuv?H#n+{bk|SBjEH-kM3oY zL}$1<3q`2D`z~Lc=@Zo9VI?(Me6qZjyPBm6dY-PA2N;0BK0Pj*_D9M>u@=Um}f ziByUN6wV$x0~Hj9=!J6lY;qosu94l*=YDp{^EQCW1`xob>VZYKksO!4w; z(OR}PH!C2SEtY|?JR*kr8R{=5%DAT{T*{V8wo9|crBW&9N{$6SO1c6S)WU4hRqZiX zv&Rz2WXTofoGUvv^syGJ>iIE?M{XD-?N0(MSew=+*i}2#^yXZ#Je#P@mx^`?W1|a2 z3?x|lZBaQ_aakIv8W6q=^fzm^fb^&$-$T zjN8OL0oQ&rUoS5yG&4s5dEqQVjO004We z>o-kPpuUZbZI-J+CF_1Dn@GWall9K#+^|y>+}1c%iQ9-%mAQ>NRfXGHIF{Qw zr>b!qbE-aW<4#rQw%)1wxovP$w z7G!gqgluk8kj<^_z*4hp72w4(yAFSIMcW!i*LI^zO`PXBx7Bg&tZVPjxoO9;rjQ{! z$!AvvZEN$c;;$nS=bW3_b*YHE>HV&Vb$T9bd$YxF9cp*1K5t#^bI6sqG8{`~M;?O| z|AtpT#z*YIYP*O*tNo5O3=MXu%1DFCV9w1t`TF6U>%7A#f`0)NIrxv_X)A9{d8peYBp?1f5?7nZE^X#*%NpJUua4WpR(^|zt8lfL z$XafhSJUWR@de3}t;7pbMs6&PjUlJ~C=-weiS}gKRSHN{tR>2B)hek_UbJ1gP+3Ig zONB}TaJhtq0I~`MqbAyumBEA!K9d|if5GDg7F(~_$2G9SQaYJ#XM9(6bj~! zFDhWdPL^(SMD#k@9t$$m%(gxDFwE@o(5@eg#Ih!B_$`Yh$hqB~`Or+-_70sW=B;7W z>aDce_6Wr9x-Si7rZHM^#l!`B%i~)$&EEDZbjrCs+Y$>qZY}f104sJp-|N^`p3R>` zl^QPPtF59A$=$b$hVyTu`*+bE_0H6{&@EG{dL%-z!QAQmFZ*=}O(nD~EZ&eZ!$7WNLW)nR)uk$h9&lBI1; zhS=mC*A26kN%k)*vaRi|VTWK?Y-`1!Qe$z{=H2~RAS3UBKa4sc>T2CAXht13hvp9U z%>=w>O`?wPcw@}rymIe=^9s%lqJsd&0SE>roEyT!OakyQQ%p02p*xv|foY~;;0V(& zFvBzh0FE*Z1IL(#fe$bZ1IL->0DxJhVPKAF7?@`o1{RoR7{CdpVc;&NVc;awFmQ@# z1_2bAhJg~(FmRe_7&zm&ox5&6%N@5D=-=|7K0xQZtO2?oox2^kYnQsr9gn)=K}>z# zgP8P!<96?oE^@~sUGg9%UG^X*U2)u=UD8$Vc%&CSh)F-_K}`A~C+q4A2!tuuvq&u{qmUTyw&*FmBGxxZ1+$qT8Er+e>AfyY52u+Fs`8 zUCADQ0lzgU*%yoef6Xwyr5j4Se_|dZAx+6vH8GC7d<+Mm(Z`BaO&+gixQ8NpYr literal 0 HcmV?d00001 diff --git a/OpenShareDemo/openshare/logo.gif b/OpenShareDemo/openshare/logo.gif new file mode 100644 index 0000000000000000000000000000000000000000..8765111e00614729e90cbc325d148428dfa9bb25 GIT binary patch literal 4229 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 literal 0 HcmV?d00001 diff --git a/openshare/openshare/main.m b/OpenShareDemo/openshare/main.m similarity index 100% rename from openshare/openshare/main.m rename to OpenShareDemo/openshare/main.m diff --git a/OpenShareDemo/openshare/test.pdf b/OpenShareDemo/openshare/test.pdf new file mode 100644 index 0000000000000000000000000000000000000000..04240e017d3c90705c51e5537bf9328df058ec48 GIT binary patch literal 28508 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 literal 0 HcmV?d00001 diff --git a/openshare/openshareTests/Info.plist b/OpenShareDemo/openshareTests/Info.plist similarity index 100% rename from openshare/openshareTests/Info.plist rename to OpenShareDemo/openshareTests/Info.plist diff --git a/openshare/openshareTests/openshareTests.m b/OpenShareDemo/openshareTests/openshareTests.m similarity index 100% rename from openshare/openshareTests/openshareTests.m rename to OpenShareDemo/openshareTests/openshareTests.m diff --git a/README.md b/README.md index 66635cd..026c267 100644 --- a/README.md +++ b/README.md @@ -59,6 +59,35 @@ msg.title=@"Hello World"; ##如何使用 +*第零步*: 修改`Info.plist`添加`URLSchemes`,让客户端可以回调app + +```xml + +CFBundleURLTypes + + + CFBundleURLName + OpenShare + CFBundleURLSchemes + + + wxd930ea5d5a258f4f + + tencent1103194207 + tencent1103194207.content + QQ41C1685F + + wb402180334 + + renrenshare228525 + + fb776442542471056 + + + + +``` + *第一步*:到`AppDelegate`中的`application:didFinishLaunchingWithOptions:`中全局注册appId/appKey ```objc diff --git a/openshare/openshare/Base.lproj/Main.storyboard b/openshare/openshare/Base.lproj/Main.storyboard deleted file mode 100644 index f56d2f3..0000000 --- a/openshare/openshare/Base.lproj/Main.storyboard +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/openshare/openshare/ViewController.h b/openshare/openshare/ViewController.h deleted file mode 100644 index a290181..0000000 --- a/openshare/openshare/ViewController.h +++ /dev/null @@ -1,15 +0,0 @@ -// -// ViewController.h -// openshare -// -// Created by LiuLogan on 15/5/20. -// Copyright (c) 2015年 OpenShare http://openshare.gfzj.us/. All rights reserved. -// - -#import - -@interface ViewController : UIViewController - - -@end - diff --git a/openshare/openshare/ViewController.m b/openshare/openshare/ViewController.m deleted file mode 100644 index 67ac241..0000000 --- a/openshare/openshare/ViewController.m +++ /dev/null @@ -1,27 +0,0 @@ -// -// ViewController.m -// openshare -// -// Created by LiuLogan on 15/5/20. -// Copyright (c) 2015年 OpenShare http://openshare.gfzj.us/. All rights reserved. -// - -#import "ViewController.h" - -@interface ViewController () - -@end - -@implementation ViewController - -- (void)viewDidLoad { - [super viewDidLoad]; - // Do any additional setup after loading the view, typically from a nib. -} - -- (void)didReceiveMemoryWarning { - [super didReceiveMemoryWarning]; - // Dispose of any resources that can be recreated. -} - -@end