From affc7e30b830a3e6e02b87678ff74814d807e6ee Mon Sep 17 00:00:00 2001 From: terenceLuffy Date: Wed, 9 Dec 2015 10:57:09 -0500 Subject: [PATCH] Adapt iOS SDK 9.0 Add comments on functions, remove scale when calculating margin, it seems that the behaviour in iOS 9 change the way of align views --- .../project.pbxproj | 17 ++--- .../UserInterfaceState.xcuserstate | Bin 13193 -> 26175 bytes .../xcdebugger/Breakpoints_v2.xcbkptlist | 55 +++++++++++++++++ .../xcschemes/ScrollViewSample.xcscheme | 13 ++-- .../ASHorizontalScrollView.h | 58 ++++++++++++++---- .../ASHorizontalScrollView.m | 36 ++++++----- .../ASHorizontalScrollViewDelegate.h | 6 +- .../ASHorizontalScrollViewDelegate.m | 22 ++++--- .../ASHorizontalScrollView/license.txt | 2 +- .../Base.lproj/Main_iPad.storyboard | 13 ++-- .../Base.lproj/Main_iPhone.storyboard | 13 ++-- .../ScrollViewSample/SAViewController.m | 37 ++++++----- .../ScrollViewSample-Info.plist | 4 +- .../ScrollViewSampleTests-Info.plist | 2 +- .../ASHorizontalScrollView.h | 58 ++++++++++++++---- .../ASHorizontalScrollView.m | 36 ++++++----- .../ASHorizontalScrollViewDelegate.h | 6 +- .../ASHorizontalScrollViewDelegate.m | 22 ++++--- Sources/ASHorizontalScrollView/license.txt | 2 +- 19 files changed, 282 insertions(+), 120 deletions(-) create mode 100644 ScrollViewSample/ScrollViewSample.xcodeproj/xcuserdata/terencechen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist diff --git a/ScrollViewSample/ScrollViewSample.xcodeproj/project.pbxproj b/ScrollViewSample/ScrollViewSample.xcodeproj/project.pbxproj index a7373f6..6b9d287 100644 --- a/ScrollViewSample/ScrollViewSample.xcodeproj/project.pbxproj +++ b/ScrollViewSample/ScrollViewSample.xcodeproj/project.pbxproj @@ -221,7 +221,7 @@ isa = PBXProject; attributes = { CLASSPREFIX = SA; - LastUpgradeCheck = 0510; + LastUpgradeCheck = 0710; ORGANIZATIONNAME = Zuse; TargetAttributes = { 7402EE06193BB82D00B1C37D = { @@ -356,6 +356,7 @@ CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; COPY_PHASE_STRIP = NO; + ENABLE_TESTABILITY = YES; GCC_C_LANGUAGE_STANDARD = gnu99; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; @@ -419,6 +420,7 @@ GCC_PREFIX_HEADER = "ScrollViewSample/ScrollViewSample-Prefix.pch"; INFOPLIST_FILE = "ScrollViewSample/ScrollViewSample-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; + PRODUCT_BUNDLE_IDENTIFIER = "Zuse.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -433,6 +435,7 @@ GCC_PREFIX_HEADER = "ScrollViewSample/ScrollViewSample-Prefix.pch"; INFOPLIST_FILE = "ScrollViewSample/ScrollViewSample-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 7.0; + PRODUCT_BUNDLE_IDENTIFIER = "Zuse.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; WRAPPER_EXTENSION = app; }; @@ -442,11 +445,6 @@ isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/ScrollViewSample.app/ScrollViewSample"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "ScrollViewSample/ScrollViewSample-Prefix.pch"; GCC_PREPROCESSOR_DEFINITIONS = ( @@ -454,6 +452,7 @@ "$(inherited)", ); INFOPLIST_FILE = "ScrollViewSampleTests/ScrollViewSampleTests-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "Zuse.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; @@ -464,14 +463,10 @@ isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/ScrollViewSample.app/ScrollViewSample"; - FRAMEWORK_SEARCH_PATHS = ( - "$(SDKROOT)/Developer/Library/Frameworks", - "$(inherited)", - "$(DEVELOPER_FRAMEWORKS_DIR)", - ); GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "ScrollViewSample/ScrollViewSample-Prefix.pch"; INFOPLIST_FILE = "ScrollViewSampleTests/ScrollViewSampleTests-Info.plist"; + PRODUCT_BUNDLE_IDENTIFIER = "Zuse.${PRODUCT_NAME:rfc1034identifier}"; PRODUCT_NAME = "$(TARGET_NAME)"; TEST_HOST = "$(BUNDLE_LOADER)"; WRAPPER_EXTENSION = xctest; diff --git a/ScrollViewSample/ScrollViewSample.xcodeproj/project.xcworkspace/xcuserdata/terencechen.xcuserdatad/UserInterfaceState.xcuserstate b/ScrollViewSample/ScrollViewSample.xcodeproj/project.xcworkspace/xcuserdata/terencechen.xcuserdatad/UserInterfaceState.xcuserstate index 58554413e0e5d92afbe467ce955021bba2d7fc64..35b0b4a3307417e7c0caee2e57c661f4e6ead312 100644 GIT binary patch literal 26175 zcmdsf2YggT*Z0iawrOP3H$B<(O|~T2-6XW^Zg$flAqk-qQuc8Z#D&k`hLIXdG-4&+1)#HXU?2CbIzInIWuMT z)m4p68qFyH0Rj}D0RvdcL`lQ&@JZH&#;Us7;o)^<_gc%F8b^eeHk6OAB9Dv0o9gP_ z0i3mblN+i69FPDH;0e4y3{Zer5C@b%1=K(T;z0t)200)X3<85e9>@nnKmjNOMPMi> z2E)J@Fcy@937{I(fLc%on!$8%KX?E<1m=S$!2+-lJOx&QRbVw(1J;6dU_E#VYz8~P zPOule0rr8T;4N?roCF_$&%i}+8GHk-fbYRikb@HF03D$dbcQa_2g;x?^n*b#7>2=c z7y%<;6dV8t!c=I0MreX*&GD# zkH9%_Ic$Y(a0P6KE8!}*8m@tB;Y)B2JO~fL)%|J8JgXjq~A3cc{poM5TYDH~m1!_mD(FU{`?LxcJ9<(1FfVO;9wQp$~Tr#vW6%8T-*d?*>^O9fLQR0O4@ zbd-@YQE8N!vQR^*Vrm#QoEkxmq()JtR3$Z@s;8z<_frp0GpR?YdDK(Xvs5e9Ms23H zP+O^O)OPA+Y6rESIzSzy4pDDXhpA)Kaq0~9G4%=cDfJok1N9^I6ZJFo3w4wFmAXa! zM%|`{mcvoGd%Ms^B6Oid7N3qJi|Q8JkKm=USKvb8<|bai_BJL8?&3) z!@R;AW{xmNnYWl@%yH&z<|K29Im29FE;5&ypO~MSTg-1PWP{l-Hk^%SV^}4tViVXz zHi=DU`?CXBBWq&Q*$g&^&1Li1A?#4Lm>tQEVoTV2*lM}%}n>|XW_b|1T+J;1)po?uV1 zr`WUXIrcpJIeUS<$bP|IXTN7}aDamx;wa9QlX7mHI~T+Sb0J(Pr{q+en$vM9TwgAe z%i^-R94?m|#0}<(xDi|_SH_id6S!)whMUMu=B99%#4k zaqGDkxDDJ!ZWH$+_Y$|6+rn+-wsEgf62_@kqJ`$P4SK=q}mjp}Xk}yfQBwC`8XeByHilnc^BuSH)B^F7# zWUwSpk}nw}DV3B-#z`tA6C~A=`k~>q&DGT>fdg;^PQV$s0{3Bq3sn=WEsZ0|XNNv4 z4ll1RZES1+;12>oAPB+? zW-*5)*a16YC+xfign&>W2VsN|KM)Bbu?y~lKf#|8q9oXl{2M)1=%uQ*qHc0}Lurk* zL^`m0w?(C8X?3+t4RzJk)`k+TMyoNKl9H4bb9}r~o0guWG$p5-l*uWYcvGTAueInC zOQfNsfxLzaYlF3-ll&g-H2!HP8nZ^LOV;R>mIQ6GQmZB1C0i^;Wuj4U)WoNljmCI= zi8QV|l_LFJgbuB(n%Hd3sv!KT8dpUKmj;vS#_}d&p?W8&MCvOvXyZdsU0roqX+u_H zaaChgSv6satgEcF%+#aEciOc0#3X%ONW5lxT*$O|tv)#}Bw3@KKHWZ3iC`dzUI(;5 z2lOBbB!d*t7xV-D!2s-vrPvL-V-M_!y|6d-!LoHAmCTb7m_QmZ0}Dt886Xq;l9}?y z0XPQVi<__oPsUSl^e93V;cISbnYFq^DkZ-P$Jb3BTso<$vb3p=4BFe+*hnmRX>F6G zqKZ6e%q?xHYi=r$DuwabC9B8O3~j2au4-yAHdspwiTQ6TuCh)R+wN>vD7%CIJ(@6E z8>=d7d$cfGXvSMtW7XHNUiJ{2206q*!QWRCQIkwYJf! zYMRpIASD)ETzbR7ND$o$M&Q6!FbW6Z=n|=$xwxp4>Z~SfP2&mMDlGwJZQveIii2?k zj|T;6ig1k-56s(uS5cQmbkB;KDqc!(^vn5@@-DhG~R` zNE{w!s9oNzhZz8m9b7o5xv7-Mqp_i(v}FaD0eH|vbdT+)NXSg^V2RYDvtn28E5J;l ze|xvHz@s3#9Xt$XgGay|tiZ824lCQiV_+_L9L&QioQX%^kpfRchL_h>SXE?3a;lnC zokE~0Y-(sOZ)$EJt0UkpRcsSZW~I z@HAKgo&nE-rC5zMI36e9M66u}o&(Q=sZqTgrX9uD|uk2PN+b}B0NbORM=G7)Z9qqvB}y{Raw=_+zPhi6k)W|!g4`F3qo30T2o)$S$7wB1w^-j-Cz&yi~F^KSIL+D zxL>dDlxfJ>-k+C2wP4W?e(oRALfJtGhZS{GK*V6BlArfeE^l zxDb7^u1f@wy}yl6U5C*tfG(El+h_(9rXv1ztxYS)6FF!aI=GPh7^|6*G;UnEcAQ>2u2iqNi(pF8-%xCJenrCs5WN=0Kn0A2 zaZm|WPz^OO9*@GK@fbW7m*9JFDK5k1Yl%E)p$_WFXEID7fBO-ssK8b{j(k?)@#Jrn zz+YjGEDa5H4R@-8KWHd7QZtP#?b7;2YXzw-NQv;w&UjH_3a<&$(P(NZYN;pUB21uN zv55jj^jF8Loy`eV$uq(65tY=P)RaiwNm*z8jE1`Adh)^_*19%j`gC#nGGX9yJXHLi z)9w3UP_`ULiO+|0dtPMwZs+tcI6_#%f=P!X@dO+#zAy%qt$<@;3A_ha<2u~XX~JPS z9M|1^!b&(E*Wg+~dkQ{A=TZ{fh%iIF!DdnIz16__9xqRX4Y(dpB=(=Y+U0(P8J;}b z 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%0AAjj|)TsaZYw^VXYT1lCT>Z2Z~{z#hp-hcD=Qg z>?McTRn|9*n=g<{nP|Ic zpXeLWWzjvcMchu@RoqS7SDY@+6laTb#Cc+$c%JxW@j~$;@e=V;@tfjx;&;Sb#oNU@ z#Cybh#UG3Jiw}x_m&hazNsOe8Bv#T+(p{1+$&_SC21;@zgCv6`LnUJ*6_P5+I7yA9 zPBK9SN>58KNv}%pNdJ*(WiDBQELBz_8!0Q5jh2 zNI6(JR5@HZLRqF9qpVO?DaR>mlna$_D~~I$C~qqNP~KKil}IH~$yExKO663=s^V1% zsw7n>RTovJDql5RH9}RSDp8G7jaN-nO;-6-e$_P93{^n2TD3{FQ*}UfSan2oOm#wa zQgupoT6IZvRdtIKaB|Mbh5I-Y7s*9&t++N^92d_eaA{l?m&fIEL%3nwXs(JI$JKBX zxyjsf-1FRQZXvgvYvfjOYq$;E+uUYu3%8#;%AMtIsugOFI$GUI-9{a&PE%*8^VMGU zZ1p1b67^E`>*{6dchp2AE8BH(Evzjzbk)}j5Qd6oKt*OzB*G$w*)=blE)NIk5 z(OlNbwVbwt_8Dz&ZK}4fw!bz*J4icBTc9n}7Hh|9>$DTJleEukLHmMsx^{+kzV;36 z3T=Z=yHdMWyI#9dyGgrKdq8_wdqjIodqR6sdrEs+`>T%A#p{xF{dF0-0lI8mjxJA^ zuN$c=)s5Db>ne3)b=A6B-HWvz@g4exrView+SX{Z9P>{UQBf{Zakr`s4bu z`g8j8`iuHIyoi_ba$d=EyoR^(4!#BN=A-x+K8f$lcjc4$9(+%J06&n=<@5O={4jnr zU%^-L)qE{Ko}b3g=#+k<1#<|9M#zx~R;~L{y<9g#p<0j)4<96dt z<1XX-#yv*gN#pO~Vd3H7vEjwxb>WM{H-{e%zYu;c{6_fA@Y~^kh2J$fO|hoVrmm*$ zrWDgNre3B@Qv(0DjY%Vg7H7_;So7bDSm_IZhG9NY{ zF&{I3VLomC*8H9MocV(JlKHCnjzwfqS=1J-MQ<@!Y!-*5g~es@SfVZQmadlGmTb#V z%W%sGOOd6-QemmGjI-2O>MRp1V3}uGVrjH&u)J;AY}sPjX8FMKq2(jXKFa~iCl=pD ztJG?+cDJTlbF3q*71puVYHOW!f_0L0mi2Y(8tX3W`_?_yz1EMd`>hA9hpdOKN37?p z7p#}8m#sfqf42T&{ndKidc%6tdfz6o*=?~?z# zyW1XZkF&S8C)zvNyV$GjbM1{j`v&_C`!4$j_PzFf_Jj6A_LKHA_H*`&_RIFG_UrcF z?YHcII&6+~$7IJe$6Uvoj&+WA9NQc_9J?GJIrcj~aU6CWah!CVa(w5w;<(}X!||u% zt`j>2PO($w40Gz8MrVvO$=Ti6!`aK3>dbIvIdhzYoP(Xk&e6^qr*BHjD=mL*dD|s$ z$z2+k)z!+?*456H;7W3Jc6D?0b)~y9UD>W&*C5wm*HD+=wc7QC>#m!+!`wQz*==)2 zxntc4?o@Xl_b~TJcbR*PyTU!$J=G2FY3`Zs+3v;eSKY6swt03$};9>n1dP68C|Nj6ma(&|f diff --git a/ScrollViewSample/ScrollViewSample.xcodeproj/xcuserdata/terencechen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/ScrollViewSample/ScrollViewSample.xcodeproj/xcuserdata/terencechen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist new file mode 100644 index 0000000..a697d0d --- /dev/null +++ b/ScrollViewSample/ScrollViewSample.xcodeproj/xcuserdata/terencechen.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -0,0 +1,55 @@ + + + + + + + + + + + + + + + + + diff --git a/ScrollViewSample/ScrollViewSample.xcodeproj/xcuserdata/terencechen.xcuserdatad/xcschemes/ScrollViewSample.xcscheme b/ScrollViewSample/ScrollViewSample.xcodeproj/xcuserdata/terencechen.xcuserdatad/xcschemes/ScrollViewSample.xcscheme index bfea789..d917a81 100644 --- a/ScrollViewSample/ScrollViewSample.xcodeproj/xcuserdata/terencechen.xcuserdatad/xcschemes/ScrollViewSample.xcscheme +++ b/ScrollViewSample/ScrollViewSample.xcodeproj/xcuserdata/terencechen.xcuserdatad/xcschemes/ScrollViewSample.xcscheme @@ -1,6 +1,6 @@ + shouldUseLaunchSchemeArgsEnv = "YES"> @@ -62,15 +62,18 @@ ReferencedContainer = "container:ScrollViewSample.xcodeproj"> + + @@ -86,10 +89,10 @@ diff --git a/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollView.h b/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollView.h index eacf777..71a612b 100644 --- a/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollView.h +++ b/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollView.h @@ -1,7 +1,13 @@ /* --------------------------------------------------------- * ASHorizontalScrollView.h * The MIT License (MIT) - * Copyright (C) 2014 WEIWEI CHEN + * Copyright (C) 2014-2015 WEIWEI CHEN + * --------------------------------------------------------- + * History + * Created by WEIWEI CHEN on 14-6-1. + * Edit by WEIWEI CHEN 14-9-21: fix problems to work on xcode 6.0.1 + * Edit by WEIWEI CHEN 15-12-09: add comments on functions + * * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * @@ -21,39 +27,67 @@ ASHorizontalScrollViewDelegate *scrollViewdelegate; } -//an array which refer to all added items +/// an array which refer to all added items @property (strong, nonatomic, readonly) NSMutableArray *items; -//the uniform size of all added items, please set it before adding any items, otherwise, default size will be applied +/// the uniform size of all added items, please set it before adding any items, otherwise, default size will be applied @property (nonatomic)CGSize uniformItemSize; -//store the current items' margin +/// store the current items' margin @property (nonatomic, readonly)int itemsMargin; -//the margin between left border and first item +/// the margin between left border and first item @property (nonatomic)float leftMarginPx; //the mini margin between items, it is the seed to calculate the actual margin which is not less than @property (nonatomic)float miniMarginPxBetweenItems; -//the mini width appear for last item of current screen, set it 0 if you don't want any part of the last item appear on the right +/// the mini width appear for last item of current screen, set it 0 if you don't want any part of the last item appear on the right @property (nonatomic)float miniAppearPxOfLastItem; -//add new item into scroll view +/** + This add a new item into the scrollview + + - parameter item: the item you would like to add, it must not be nil. + */ - (void) addItem:(UIView*)item; -//add items into scroll view +/** + This add multi new items into the scrollview + + - parameter items: the items in array you would like to add, it must not be nil. + */ - (void) addItems:(NSArray*)items; -//remove item from scroll view with that specified item +/** + It removes the specified item from scrollview + + - parameter item: the item you would like to remove. + + - returns: true if removing successfully. + */ - (BOOL) removeItem:(UIView*)item; -//remove item from scroll view with index in the array +/** + It removes the specified item at index from scrollview + + - parameter index: the index of item you would like to remove. + + - returns: true if removing successfully. + */ - (BOOL) removeItemAtIndex:(NSInteger)index; -//remove all items +/** + It removes all items from scrollview + + - returns: true if removing successfully. + */ - (BOOL) removeAllItems; -//calculate items' margin, this must be called after setting any size or margin properties +/** + It re-calculate the item margin to fit in current view frame + - note: This must be called after changing any size or margin property of this class to get acurrate margin + - seealso: calculateMarginBetweenItems + */ - (void) setItemsMarginOnce; @end diff --git a/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollView.m b/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollView.m index 40b3af6..e5dfa79 100644 --- a/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollView.m +++ b/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollView.m @@ -1,10 +1,20 @@ -// -// ASHorizontalScrollView.m -// ScrollViewSample -// -// Created by Vivien on 2014-06-01. -// Copyright (c) 2014 Zuse. All rights reserved. -// +/* --------------------------------------------------------- + * ASHorizontalScrollView.m + * The MIT License (MIT) + * Copyright (C) 2014-2015 WEIWEI CHEN + * --------------------------------------------------------- + * History + * Created by WEIWEI CHEN on 14-6-1. + * Edit by WEIWEI CHEN 14-9-21: fix problems to work on xcode 6.0.1 + * Edit by WEIWEI CHEN 15-12-09: add comments on functions, remove scale when calculating margin, it seems that the behaviour in iOS 9 change the way of align views + * + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * -------------------------------------------------------*/ #import "ASHorizontalScrollView.h" @@ -81,14 +91,14 @@ - (void)addItems:(NSArray *)items } } -//calculate the exact margin between items +/// Calculate the exact margin between items - (int)calculateMarginBetweenItems { - CGFloat scale = [UIScreen mainScreen].scale; +// CGFloat scale = [UIScreen mainScreen].scale; //calculate how many items listed on current screen except the last half appearance one - int numberOfItemForCurrentWidth = floorf((self.frame.size.width*scale-self.leftMarginPx-self.miniAppearPxOfLastItem)/(_uniformItemSize.width+self.miniMarginPxBetweenItems)); + int numberOfItemForCurrentWidth = floorf((self.frame.size.width-self.leftMarginPx-self.miniAppearPxOfLastItem)/(_uniformItemSize.width+self.miniMarginPxBetweenItems)); - return round((self.frame.size.width*scale-self.leftMarginPx-self.miniAppearPxOfLastItem)/numberOfItemForCurrentWidth - _uniformItemSize.width); + return round((self.frame.size.width-self.leftMarginPx-self.miniAppearPxOfLastItem)/numberOfItemForCurrentWidth - _uniformItemSize.width); } - (void)setItemsMarginOnce @@ -97,7 +107,6 @@ - (void)setItemsMarginOnce } #pragma mark - remove item - - (BOOL) removeAllItems { for (long i = self.items.count - 1; i >= 0; i--) { @@ -110,7 +119,6 @@ - (BOOL) removeAllItems return true; } -//return whether removing action is success - (BOOL)removeItem:(UIView *)item { NSInteger index = [self.items indexOfObject:item]; @@ -136,7 +144,7 @@ - (BOOL)removeItemAtIndex:(NSInteger)index return true; } -//refresh all subviews for changing size of current frame +/// Refresh all subviews for changing size of current frame - (void) refreshSubView { [self setItemsMarginOnce]; diff --git a/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.h b/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.h index 425a91f..08516c0 100644 --- a/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.h +++ b/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.h @@ -1,7 +1,11 @@ /* --------------------------------------------------------- * ASHorizontalScrollViewDelegate.h * The MIT License (MIT) - * Copyright (C) 2014 WEIWEI CHEN + * Copyright (C) 2014-2015 WEIWEI CHEN + * --------------------------------------------------------- + * History + * Created by WEIWEI CHEN on 14-6-2. + * * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.m b/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.m index db51763..13b756e 100644 --- a/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.m +++ b/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.m @@ -1,10 +1,18 @@ -// -// ASHorizontalScrollViewDelegate.m -// ScrollViewSample -// -// Created by Vivien on 2014-06-02. -// Copyright (c) 2014 Zuse. All rights reserved. -// +/* --------------------------------------------------------- + * ASHorizontalScrollViewDelegate.m + * The MIT License (MIT) + * Copyright (C) 2014-2015 WEIWEI CHEN + * --------------------------------------------------------- + * History + * Created by WEIWEI CHEN on 14-6-2. + * + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * -------------------------------------------------------*/ #import "ASHorizontalScrollViewDelegate.h" #import "ASHorizontalScrollView.h" diff --git a/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/license.txt b/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/license.txt index 02497f7..008cf3e 100755 --- a/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/license.txt +++ b/ScrollViewSample/ScrollViewSample/ASHorizontalScrollView/license.txt @@ -1,5 +1,5 @@ ASHorizontalScrollView -Copyright (c) 2014 WEIWEI CHEN +Copyright (c) 2014-2015 WEIWEI CHEN Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/ScrollViewSample/ScrollViewSample/Base.lproj/Main_iPad.storyboard b/ScrollViewSample/ScrollViewSample/Base.lproj/Main_iPad.storyboard index 1d9aac6..e2da1ec 100644 --- a/ScrollViewSample/ScrollViewSample/Base.lproj/Main_iPad.storyboard +++ b/ScrollViewSample/ScrollViewSample/Base.lproj/Main_iPad.storyboard @@ -1,10 +1,11 @@ - + - + + - + @@ -15,6 +16,7 @@ + @@ -22,9 +24,4 @@ - - - - - diff --git a/ScrollViewSample/ScrollViewSample/Base.lproj/Main_iPhone.storyboard b/ScrollViewSample/ScrollViewSample/Base.lproj/Main_iPhone.storyboard index b93e921..0ceda64 100644 --- a/ScrollViewSample/ScrollViewSample/Base.lproj/Main_iPhone.storyboard +++ b/ScrollViewSample/ScrollViewSample/Base.lproj/Main_iPhone.storyboard @@ -1,10 +1,11 @@ - + - + + - + @@ -15,6 +16,7 @@ + @@ -22,9 +24,4 @@ - - - - - diff --git a/ScrollViewSample/ScrollViewSample/SAViewController.m b/ScrollViewSample/ScrollViewSample/SAViewController.m index 64c8f13..3caa482 100644 --- a/ScrollViewSample/ScrollViewSample/SAViewController.m +++ b/ScrollViewSample/ScrollViewSample/SAViewController.m @@ -57,50 +57,55 @@ - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - static NSString *CellIdentifier = @"Cell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + static NSString *CellIdentifierPortrait = @"CellPortrait"; + static NSString *CellIdentifierLandscape = @"CellLandscape"; + NSString *indentifier = self.view.frame.size.width > self.view.frame.size.height ? CellIdentifierLandscape : CellIdentifierPortrait; + + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:indentifier]; if (!cell) { - cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; - cell.accessoryType = UITableViewCellAccessoryNone; - + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:indentifier]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + ASHorizontalScrollView *horizontalScrollView = [[ASHorizontalScrollView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, kCellHeight)]; if (indexPath.row == 0) { + horizontalScrollView.miniAppearPxOfLastItem = 10; //sample code of how to use this scroll view - ASHorizontalScrollView *horizontalScrollView = [[ASHorizontalScrollView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, kCellHeight)]; - [cell.contentView addSubview:horizontalScrollView]; - horizontalScrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; horizontalScrollView.uniformItemSize = CGSizeMake(50, 50); //this must be called after changing any size or margin property of this class to get acurrate margin [horizontalScrollView setItemsMarginOnce]; //create 20 buttons for cell 1 NSMutableArray *buttons = [NSMutableArray array]; for (int i=1; i<20; i++) { - UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 30, 30)]; + UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero]; label.backgroundColor = [UIColor blueColor]; [buttons addObject:label]; } [horizontalScrollView addItems:buttons]; } else if (indexPath.row == 1) { - ASHorizontalScrollView *horizontalScrollView = [[ASHorizontalScrollView alloc] initWithFrame:CGRectMake(0, 0, tableView.frame.size.width, kCellHeight)]; - [cell.contentView addSubview:horizontalScrollView]; - horizontalScrollView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - horizontalScrollView.uniformItemSize = CGSizeMake(80, 50); + horizontalScrollView.miniAppearPxOfLastItem = 20; + //setup the uniform size for all added items + horizontalScrollView.uniformItemSize = CGSizeMake(90, 50); //this must be called after changing any size or margin property of this class to get acurrate margin [horizontalScrollView setItemsMarginOnce]; NSMutableArray *buttons = [NSMutableArray array]; for (int i=1; i<21; i++) { - UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 90, 30)]; + UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero]; label.backgroundColor = [UIColor purpleColor]; [buttons addObject:label]; } [horizontalScrollView addItems:buttons]; - [horizontalScrollView removeItemAtIndex:0]; - [horizontalScrollView removeItemAtIndex:1]; +// [horizontalScrollView removeItemAtIndex:0]; +// [horizontalScrollView removeItemAtIndex:1]; } + + [cell.contentView addSubview:horizontalScrollView]; + horizontalScrollView.translatesAutoresizingMaskIntoConstraints = false; + [cell.contentView addConstraint:[NSLayoutConstraint constraintWithItem:horizontalScrollView attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:kCellHeight]]; + [cell.contentView addConstraint:[NSLayoutConstraint constraintWithItem:horizontalScrollView attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationEqual toItem:cell.contentView attribute:NSLayoutAttributeWidth multiplier:1 constant:0]]; } diff --git a/ScrollViewSample/ScrollViewSample/ScrollViewSample-Info.plist b/ScrollViewSample/ScrollViewSample/ScrollViewSample-Info.plist index d641199..8210fcf 100644 --- a/ScrollViewSample/ScrollViewSample/ScrollViewSample-Info.plist +++ b/ScrollViewSample/ScrollViewSample/ScrollViewSample-Info.plist @@ -9,7 +9,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - Zuse.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundleName @@ -24,6 +24,8 @@ 1.0 LSRequiresIPhoneOS + UILaunchStoryboardName + Main_iPad UIMainStoryboardFile Main_iPhone UIMainStoryboardFile~ipad diff --git a/ScrollViewSample/ScrollViewSampleTests/ScrollViewSampleTests-Info.plist b/ScrollViewSample/ScrollViewSampleTests/ScrollViewSampleTests-Info.plist index e8d5110..169b6f7 100644 --- a/ScrollViewSample/ScrollViewSampleTests/ScrollViewSampleTests-Info.plist +++ b/ScrollViewSample/ScrollViewSampleTests/ScrollViewSampleTests-Info.plist @@ -7,7 +7,7 @@ CFBundleExecutable ${EXECUTABLE_NAME} CFBundleIdentifier - Zuse.${PRODUCT_NAME:rfc1034identifier} + $(PRODUCT_BUNDLE_IDENTIFIER) CFBundleInfoDictionaryVersion 6.0 CFBundlePackageType diff --git a/Sources/ASHorizontalScrollView/ASHorizontalScrollView.h b/Sources/ASHorizontalScrollView/ASHorizontalScrollView.h index eacf777..71a612b 100644 --- a/Sources/ASHorizontalScrollView/ASHorizontalScrollView.h +++ b/Sources/ASHorizontalScrollView/ASHorizontalScrollView.h @@ -1,7 +1,13 @@ /* --------------------------------------------------------- * ASHorizontalScrollView.h * The MIT License (MIT) - * Copyright (C) 2014 WEIWEI CHEN + * Copyright (C) 2014-2015 WEIWEI CHEN + * --------------------------------------------------------- + * History + * Created by WEIWEI CHEN on 14-6-1. + * Edit by WEIWEI CHEN 14-9-21: fix problems to work on xcode 6.0.1 + * Edit by WEIWEI CHEN 15-12-09: add comments on functions + * * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * @@ -21,39 +27,67 @@ ASHorizontalScrollViewDelegate *scrollViewdelegate; } -//an array which refer to all added items +/// an array which refer to all added items @property (strong, nonatomic, readonly) NSMutableArray *items; -//the uniform size of all added items, please set it before adding any items, otherwise, default size will be applied +/// the uniform size of all added items, please set it before adding any items, otherwise, default size will be applied @property (nonatomic)CGSize uniformItemSize; -//store the current items' margin +/// store the current items' margin @property (nonatomic, readonly)int itemsMargin; -//the margin between left border and first item +/// the margin between left border and first item @property (nonatomic)float leftMarginPx; //the mini margin between items, it is the seed to calculate the actual margin which is not less than @property (nonatomic)float miniMarginPxBetweenItems; -//the mini width appear for last item of current screen, set it 0 if you don't want any part of the last item appear on the right +/// the mini width appear for last item of current screen, set it 0 if you don't want any part of the last item appear on the right @property (nonatomic)float miniAppearPxOfLastItem; -//add new item into scroll view +/** + This add a new item into the scrollview + + - parameter item: the item you would like to add, it must not be nil. + */ - (void) addItem:(UIView*)item; -//add items into scroll view +/** + This add multi new items into the scrollview + + - parameter items: the items in array you would like to add, it must not be nil. + */ - (void) addItems:(NSArray*)items; -//remove item from scroll view with that specified item +/** + It removes the specified item from scrollview + + - parameter item: the item you would like to remove. + + - returns: true if removing successfully. + */ - (BOOL) removeItem:(UIView*)item; -//remove item from scroll view with index in the array +/** + It removes the specified item at index from scrollview + + - parameter index: the index of item you would like to remove. + + - returns: true if removing successfully. + */ - (BOOL) removeItemAtIndex:(NSInteger)index; -//remove all items +/** + It removes all items from scrollview + + - returns: true if removing successfully. + */ - (BOOL) removeAllItems; -//calculate items' margin, this must be called after setting any size or margin properties +/** + It re-calculate the item margin to fit in current view frame + - note: This must be called after changing any size or margin property of this class to get acurrate margin + - seealso: calculateMarginBetweenItems + */ - (void) setItemsMarginOnce; @end diff --git a/Sources/ASHorizontalScrollView/ASHorizontalScrollView.m b/Sources/ASHorizontalScrollView/ASHorizontalScrollView.m index 40b3af6..e5dfa79 100644 --- a/Sources/ASHorizontalScrollView/ASHorizontalScrollView.m +++ b/Sources/ASHorizontalScrollView/ASHorizontalScrollView.m @@ -1,10 +1,20 @@ -// -// ASHorizontalScrollView.m -// ScrollViewSample -// -// Created by Vivien on 2014-06-01. -// Copyright (c) 2014 Zuse. All rights reserved. -// +/* --------------------------------------------------------- + * ASHorizontalScrollView.m + * The MIT License (MIT) + * Copyright (C) 2014-2015 WEIWEI CHEN + * --------------------------------------------------------- + * History + * Created by WEIWEI CHEN on 14-6-1. + * Edit by WEIWEI CHEN 14-9-21: fix problems to work on xcode 6.0.1 + * Edit by WEIWEI CHEN 15-12-09: add comments on functions, remove scale when calculating margin, it seems that the behaviour in iOS 9 change the way of align views + * + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * -------------------------------------------------------*/ #import "ASHorizontalScrollView.h" @@ -81,14 +91,14 @@ - (void)addItems:(NSArray *)items } } -//calculate the exact margin between items +/// Calculate the exact margin between items - (int)calculateMarginBetweenItems { - CGFloat scale = [UIScreen mainScreen].scale; +// CGFloat scale = [UIScreen mainScreen].scale; //calculate how many items listed on current screen except the last half appearance one - int numberOfItemForCurrentWidth = floorf((self.frame.size.width*scale-self.leftMarginPx-self.miniAppearPxOfLastItem)/(_uniformItemSize.width+self.miniMarginPxBetweenItems)); + int numberOfItemForCurrentWidth = floorf((self.frame.size.width-self.leftMarginPx-self.miniAppearPxOfLastItem)/(_uniformItemSize.width+self.miniMarginPxBetweenItems)); - return round((self.frame.size.width*scale-self.leftMarginPx-self.miniAppearPxOfLastItem)/numberOfItemForCurrentWidth - _uniformItemSize.width); + return round((self.frame.size.width-self.leftMarginPx-self.miniAppearPxOfLastItem)/numberOfItemForCurrentWidth - _uniformItemSize.width); } - (void)setItemsMarginOnce @@ -97,7 +107,6 @@ - (void)setItemsMarginOnce } #pragma mark - remove item - - (BOOL) removeAllItems { for (long i = self.items.count - 1; i >= 0; i--) { @@ -110,7 +119,6 @@ - (BOOL) removeAllItems return true; } -//return whether removing action is success - (BOOL)removeItem:(UIView *)item { NSInteger index = [self.items indexOfObject:item]; @@ -136,7 +144,7 @@ - (BOOL)removeItemAtIndex:(NSInteger)index return true; } -//refresh all subviews for changing size of current frame +/// Refresh all subviews for changing size of current frame - (void) refreshSubView { [self setItemsMarginOnce]; diff --git a/Sources/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.h b/Sources/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.h index 425a91f..08516c0 100644 --- a/Sources/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.h +++ b/Sources/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.h @@ -1,7 +1,11 @@ /* --------------------------------------------------------- * ASHorizontalScrollViewDelegate.h * The MIT License (MIT) - * Copyright (C) 2014 WEIWEI CHEN + * Copyright (C) 2014-2015 WEIWEI CHEN + * --------------------------------------------------------- + * History + * Created by WEIWEI CHEN on 14-6-2. + * * * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: * diff --git a/Sources/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.m b/Sources/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.m index db51763..13b756e 100644 --- a/Sources/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.m +++ b/Sources/ASHorizontalScrollView/ASHorizontalScrollViewDelegate.m @@ -1,10 +1,18 @@ -// -// ASHorizontalScrollViewDelegate.m -// ScrollViewSample -// -// Created by Vivien on 2014-06-02. -// Copyright (c) 2014 Zuse. All rights reserved. -// +/* --------------------------------------------------------- + * ASHorizontalScrollViewDelegate.m + * The MIT License (MIT) + * Copyright (C) 2014-2015 WEIWEI CHEN + * --------------------------------------------------------- + * History + * Created by WEIWEI CHEN on 14-6-2. + * + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + * -------------------------------------------------------*/ #import "ASHorizontalScrollViewDelegate.h" #import "ASHorizontalScrollView.h" diff --git a/Sources/ASHorizontalScrollView/license.txt b/Sources/ASHorizontalScrollView/license.txt index 02497f7..008cf3e 100755 --- a/Sources/ASHorizontalScrollView/license.txt +++ b/Sources/ASHorizontalScrollView/license.txt @@ -1,5 +1,5 @@ ASHorizontalScrollView -Copyright (c) 2014 WEIWEI CHEN +Copyright (c) 2014-2015 WEIWEI CHEN Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: