From 5c97ecc8f398f541f5b108767007dfa7ecbe9445 Mon Sep 17 00:00:00 2001 From: wu736139669 Date: Mon, 19 Jan 2015 20:31:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=87=8D=E5=86=99=E7=9A=84Me?= =?UTF-8?q?ssageTableView?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../project.pbxproj | 8 ++++ .../UserInterfaceState.xcuserstate | Bin 11163 -> 12149 bytes ASHMessageTableViewDemo/MessageTableView.h | 13 +++++++ ASHMessageTableViewDemo/MessageTableView.m | 35 ++++++++++++++++++ 4 files changed, 56 insertions(+) create mode 100644 ASHMessageTableViewDemo/MessageTableView.h create mode 100644 ASHMessageTableViewDemo/MessageTableView.m diff --git a/ASHMessageTableViewDemo.xcodeproj/project.pbxproj b/ASHMessageTableViewDemo.xcodeproj/project.pbxproj index e564c76..28ef975 100644 --- a/ASHMessageTableViewDemo.xcodeproj/project.pbxproj +++ b/ASHMessageTableViewDemo.xcodeproj/project.pbxproj @@ -14,6 +14,7 @@ A97429B81A68C81C00732735 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = A97429B71A68C81C00732735 /* Images.xcassets */; }; A97429BB1A68C81C00732735 /* LaunchScreen.xib in Resources */ = {isa = PBXBuildFile; fileRef = A97429B91A68C81C00732735 /* LaunchScreen.xib */; }; A97429C71A68C81C00732735 /* ASHMessageTableViewDemoTests.m in Sources */ = {isa = PBXBuildFile; fileRef = A97429C61A68C81C00732735 /* ASHMessageTableViewDemoTests.m */; }; + A9B965551A6D307B0017F9F2 /* MessageTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = A9B965541A6D307B0017F9F2 /* MessageTableView.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -40,6 +41,8 @@ A97429C01A68C81C00732735 /* ASHMessageTableViewDemoTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = ASHMessageTableViewDemoTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; A97429C51A68C81C00732735 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; A97429C61A68C81C00732735 /* ASHMessageTableViewDemoTests.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ASHMessageTableViewDemoTests.m; sourceTree = ""; }; + A9B965531A6D307B0017F9F2 /* MessageTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MessageTableView.h; sourceTree = ""; }; + A9B965541A6D307B0017F9F2 /* MessageTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MessageTableView.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -89,6 +92,8 @@ A97429B71A68C81C00732735 /* Images.xcassets */, A97429B91A68C81C00732735 /* LaunchScreen.xib */, A97429AA1A68C81C00732735 /* Supporting Files */, + A9B965531A6D307B0017F9F2 /* MessageTableView.h */, + A9B965541A6D307B0017F9F2 /* MessageTableView.m */, ); path = ASHMessageTableViewDemo; sourceTree = ""; @@ -220,6 +225,7 @@ buildActionMask = 2147483647; files = ( A97429B31A68C81C00732735 /* ViewController.m in Sources */, + A9B965551A6D307B0017F9F2 /* MessageTableView.m in Sources */, A97429B01A68C81C00732735 /* AppDelegate.m in Sources */, A97429AD1A68C81C00732735 /* main.m in Sources */, ); @@ -412,6 +418,7 @@ A97429CC1A68C81C00732735 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; A97429CD1A68C81C00732735 /* Build configuration list for PBXNativeTarget "ASHMessageTableViewDemoTests" */ = { isa = XCConfigurationList; @@ -420,6 +427,7 @@ A97429CF1A68C81C00732735 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/ASHMessageTableViewDemo.xcodeproj/project.xcworkspace/xcuserdata/xmfish.xcuserdatad/UserInterfaceState.xcuserstate b/ASHMessageTableViewDemo.xcodeproj/project.xcworkspace/xcuserdata/xmfish.xcuserdatad/UserInterfaceState.xcuserstate index 7351f884911cb54a1a307ee94fb8ff31b6f8605a..9d7aadac07d321c2d241ed6c0ce5361e8634c18e 100644 GIT binary patch delta 5928 zcmZu!2Y6If)4p@g_LgngzIS);?%hBj0Rn;00|W^r0i=f#QWglQqyRA{doCyMhzJRCJQTqL~2 zmDa`(TiIo1JNKf7!5%~(J&N1W6)SM4i%yzREmO#AP&8W-bORfY%~Y) zXaQP;7Ng)2RE4V1MzjfSMqAKU^ap8JVN$gb{BDtB zTd}B%R6LLjA|v=D*=~NKYL9~24F=MN3?Q+5yxQlrP?=R=C4-6ME9xM1h&oIu!2wR7 zspDiA8A^tbZv4m6v`BB4|BgGf*r;fGnvzorLCFh#Dzch7MV%&{NqjX#KqHbuh7*S0 zqi&NJ1<_RG^5ukSP;UXTRAddrKuc&vMv>7Zy#`uC8;B#BB$pJ26nj!isu$Ip>H{4K zMNA|$Rh!1|l@9PV>rzmV5XcFPO)CyW=f0@ewN5eZUlqr_sMw=UF(XwwCS$Nqzj{GmDslz%hCYx4$s|C=kg;Uk3g`#@sYWn>WRdYgq;vRB zH03>Vo0lEE_|~wp=1tu#;##&XmkkbmZC>7BYZPRJY^B0zNP~2eNAgJlnXm#fAy8+l zkQ6<$H7n4trT|L*b^nPlNmx@#O2|ZE%_PDI8Od#4b#wHWLqnU!HE&%$w5&~RTxfqS z)nJXl6iQzO9C@t@rjjx~J1iz?I=oBi*TCB_17^Z3cn4;~9GDB0q?}ZcAR&Y!Q^-{E z26=N0@RWyYB<#BY7Q%b*KII|Ph(_2yo4iG)lefu?ZMVaGkg%T0tD-an6W6Iaa%`sZ zRzWL>p%UN&*bX0(bRp+P@(!6p<`UP7iP=?`nAy)V78G^F5$_4$UHKiEFcTXd$sT-oP<+?R~k4Zc;_MSlSQ0B z%4`8X@Y{Hu8-nJtvY1v)-L0FKH+7e_h=~&d+@?iL`9F#M9_~_+Yv3AOhZ}GcZov<5 z8}7i5WHDJnmXc*;IjJJmq=u|m13w9yc;Oeg55H0#cnH6dl|l$7b0FqG#X$toa1g^m zOTvuonb5s^W>#^&xUfrMAdPQfFgQ}RrY=QASw+QZdBt_I!lFKDrTHbrsoE&sW3}>m zhRMOR=5l3^Y&~d61WitU?UgT!nmO3qRZ%)3FhX3_WX1wpO7gWE)`yCZ%QNHGpo0T2lHN z)Eu=yG2{cXoqSk>S_!aPlN|z-GyD;2X8#UC$3h*+PU2`-6^|0B$knI|>WaFd1k@e9 zf_jjT$bZQ$vYUKNJ|TNnqn@Z2>W%uKB$O=VdN0{WJ}0NiVe%D8=YzI)gVutQ^qj1W z==}8YfsEp;iGiq$sG|Im!i;~sNkOTU{(l<-8jaF~0A`T=*ri z7rlncgw;u?995+B%naleXN}1U6b|Z{ml>EWICF#?P1WlEx3_8Kr>K5Ze>4S6H=~LI#ohAriUsWf zS+51!@gIpAYw9`%S{lmgGV(Rw+u`X^gKC8yh*qGLXcbybz9HX|bL9LAv<9t3>(F{~ zfqX~4C)Wrwv`=76aj1U}do^q9xVmpC_2rS2pBdnnIxI~ZNU{y>4B7kuZATxX9poap zL@tvnD}+AarG^V#AX^CgZ;m&^K1H902>KbhT19z+V? zm*h9lP4XkTOJbjU$k%Mp!Osg=5r-ViZ{3f2pftdrhP+Hj>FdTS86fZ?@M&U4uwkb)czww6wRkB9 zE^3(oRv4${Yq9&pr~QpR{X(pgxfjrkk|&%PW(}QoeCb8)lY@O zC=nCewy8U|ZOi&ef?w_t1wY1np4-^Vf$zDEPjRRfJ#+N{2kbxNG(L=vhN^xVIbMa2 zao~S0`2wE|Ns`FnsyZK@OU~f4f~2l@;cqx$Tn{y`wgPj{Q+YM`0=|eZanP89rW`bT zPPgyywU-!l9pB&}l7l9EHRHG5!9Tqu{TbimAc})%{yWBFeTe^fN%{!?$w6}tTJUzS z8&dhc(pLOvv8C_7jN|`$j@1>K2!uj|L&8)i3`b$f19}Ha1DRb4GsX#rcHv2pL?q=u z_L_qm&^F;pcL<#p+U{lH68Am2C0yfvL_Z0ax2D2ntq)EPl^!052jii_Wo-l=g(u)5 z;i@(XmkJCo$3cP0Qw16?#vkF+!cFXVkzC{xbrKB{4HjjH#*1=9d7=W*BvGlTOjIrk ziq?p}7pufpu|rIYJwdTo%!*^g?ZmH$6UDv6eZ*VEyTk{?Ux?3$&xyYm-xL2Xek6V@ zej*V`BodiKAyG-9B*~HqlGh|Hc56$4oXf)&PuLH z?nr)-%A`7Jgfv>(UYaOPlJ=GMmkyQ=m8M8XNVBBb(qOJMU;35wJL&h*>(ZODMA;zO zDA{OPx-3&RMwTy|AS;rU$R^23Wh-Q- zQh9}($fwBPlD{pVDSt=4NWM{iN`78`P5y)YH~C}v6ZunxNFhVN^6$#3*7F zZGwunie8F=icyO3iX26rqCiooIIFm#xU0CYc%b-A@mTRh@l**)nKDf2Q+87JP>xmR zDQ7EJD7PrLDz_=OEB7mpDvv9_P@YttR$fqEQeIJBRbErxQ0Y|hs(jT#)k;;ZYOQL6 zYLjY<>T}fz)oIlk)mhcIsvD|1s=KP-&#DKi-&B97{#47mhbyFnd^|u*k5cVbNjl2E&$xRfW}r zt<-9?cCAnA*EZ5dYMW|fwQaO*we7VXwVkyoT24DhyF>E6)2qkCUhqg$z4ty`m8r~5$np>C({zq;MJPjm-$ zU+TWqo!8yc-O=6E-O~l{>mKNl-l1=-@1XCbkJoqAC+J_%C+d6Y`{htvz^hNp-eNaC`U!&ioKcGLazh{scJcibWNrno;n}#`tg@#3jC5B~&TElk3 z4#P)=U51Yhdkp&wpBlb2oHBf6_}bXc*u&V<*xQ(7OfilK8b=vN8*_~nMq->|e8V`+ zINdnIILkQOxXf5(tTC=K)*9Cu*Bdt)HygJa_l2Wye|XpM3E_PBrtl--*TR1>iA)lc z%%m`>Od6Bcq&FE&CR1Zm6H}C_nJLB;Yl<_qGj%k@o4T6%nKDeTo7S85n0_*YS!;Hf z8=He2%$>~f=C0-h^DE{=b1!orbFw+joM8@_$C|Uu+2&kxzIlSV$XsHcZmu$KG9NIX zG~cu+EVQMurM0E4rM;z-CEn82GTt)D@|xv!OVGkurdp<3=2;e7mRgousx50Q>ns~A zn=D%_7cCF1YOBd=wc4#tYoxWUwSCaq(c0PC#oEo<-P*%C*gDjjVjW=}WgTrzw`N+$ zSc|Md>-*M?)+5$i)(1AN&1v)78rdRkO>NP(Hnz65_O_0;&bBVLUbX?Y5w;1oH*CCZ zm2JQ6Gur{%A=?q#G27pEsa<2&+Vys$-DLOLqwTHit?hC4cJ{vZ{`O#sz0_V|Ut(Wt zUvJ-N-)ui(KWqQie%^l3{<}lukT_%xg~Q-z?1*+GIFcNb9p#Q%$1cY;$6d!g$9=~G zr_yP0dYoP->x^(VcE&hcIa@p9ob8+)oZX#$ohi;jXV5v_Im0>2Iomnc`JQu;bBS}A zv&vcH+~>SRLy)%75p*Qolx{}1pj*;C=$`aodKf*N9z~C))9GxwfG(tq>524IdOAIW zo<&#EJUx$IK(C~C();Km^jZ1>eTlw8U#D-tiKDp!qbrE7<4 zuj{1ihMRKR-L%{7X56g1le>pI*`4ApcfakP>7MPbbo1_7_d53m_a^ri_cr%#_owd9 z-3Q%=-ACQuxX-ySxG%ZyxbM1ucK_o3+e3MfN93VBO*~PaW}X(FUY?|&r?2N#&p^*e z&uCA&C)1PbS>RdhIpF!i^U(7r<7T3m=1dF|%fvD5m~KoW)0;_V`Y|J!bS9G-!(=mg z%mk*0DQ3!<8O$7}lHr+!%pztfvz%GOe8}u#K4JDT2bjamG3Eqw)hqTk^2U0*db@iQ zy}iB3-u~X;KyR8i(>vCi<<0iyc_(;_yfeHXdB5@gIHtzc)ev)Q>U&(3ET zvMbqIb}hSs-OO%f_ptlf&)9?P5%w5+hP}XEX0Ni>*_-SG_7VG-ed0%cv0vs__?>>g zzokFU-_GB`-^HKc@8R$1AL1YF&-EAji~SS*W&R33=b!4I?_Uk delta 5360 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 diff --git a/ASHMessageTableViewDemo/MessageTableView.h b/ASHMessageTableViewDemo/MessageTableView.h new file mode 100644 index 0000000..24abcf4 --- /dev/null +++ b/ASHMessageTableViewDemo/MessageTableView.h @@ -0,0 +1,13 @@ +// +// MessageTableView.h +// ASHMessageTableViewDemo +// +// Created by xmfish on 15/1/19. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import + +@interface MessageTableView : UITableView + +@end diff --git a/ASHMessageTableViewDemo/MessageTableView.m b/ASHMessageTableViewDemo/MessageTableView.m new file mode 100644 index 0000000..d766d17 --- /dev/null +++ b/ASHMessageTableViewDemo/MessageTableView.m @@ -0,0 +1,35 @@ +// +// MessageTableView.m +// ASHMessageTableViewDemo +// +// Created by xmfish on 15/1/19. +// Copyright (c) 2015年 ash. All rights reserved. +// + +#import "MessageTableView.h" + +@implementation MessageTableView + +/* +// Only override drawRect: if you perform custom drawing. +// An empty implementation adversely affects performance during animation. +- (void)drawRect:(CGRect)rect { + // Drawing code +} +*/ + + +- (void)setContentSize:(CGSize)contentSize +{ + if (!CGSizeEqualToSize(self.contentSize, CGSizeZero)) + { + if (contentSize.height > self.contentSize.height) + { + CGPoint offset = self.contentOffset; + offset.y += (contentSize.height - self.contentSize.height); + self.contentOffset = offset; + } + } + [super setContentSize:contentSize]; +} +@end