最新消息:文章中包含代码时,请遵守代码高亮规范!

iOS – 九宫格的基本实现

iOS user 3838浏览 0评论

在开发中,经常会遇到要将按钮或者图片的有序排列的需求,在这当中属九宫格排列的需求最为常见,当然很多人会说九宫格的布局完全可以用UICollectView来实现,但是不得不说,实现九宫格的思路和过程,却是每一个iOS程序员所必须要掌握的。所以有必要再回头来看看。

借用一张前辈实现的效果图:

12545710-33a45da8e49b5cee.png

可以看到图中有四行四列。

声明好 每一个item 的 宽、高和列

static NSInteger const colCount = 4;
static float const pic_height = 80 ;
static float const pic_width = 70 ;
  • 我这里没有用宏定义,因为全局的静态变量有点比宏定义要多。
  1. static在内存中只会初始化一次,防止在其他的文件中被引用,下一次依据上一次的结果;防止在其他的文件中被引用;
  2. const 则是常量指针指向的内容不可以被修改,保证数据不被外界修改;

声明数组

@property(nonatomic,strong) NSMutableArray<NSString *> *pictures;
  • 懒加载数组. 用到时才加载
-(NSMutableArray<NSString *> *)pictures{    
    if (_pictures == nil) {
        _pictures = [NSMutableArray array] ;
        for (int i = 0; i < 16; i++) {
            SString *imageName = [NSString stringWithFormat:@"test_%d",i];
            [_pictures addObject:imageName];
        }
    }    
    return _pictures ;
}
  • 通过block的循环实现
[self.pictures enumerateObjectsUsingBlock:^(NSString * _Nonnull imageName, NSUInteger i, BOOL * _Nonnull stop) {
        UIImageView *imageView = [[UIImageView alloc] init];
        imageView.image = [UIImage imageNamed:imageName];        
        NSInteger row = i / colCount;        
        NSInteger col = i % colCount;        
        CGFloat margin = (self.view.bounds.size.width - (pic_height * colCount)) / (colCount + 1);        
        CGFloat picX = margin + (pic_height + margin) * col;        
        CGFloat picY = margin + (pic_width + margin) * row;
        imageView.frame = CGRectMake(picX, picY, pic_height, pic_width);
        

[self.view addSubview:imageView]

;     }];

这样数据就显示出来了。有更好想法的可以说出来哦,共勉~

转载时请注明出处及相应链接,本文永久地址:https://shanqikangfu.com/25431.html


pay_weixin
pay_weixin
微信打赏
pay_weixin
支付宝打赏
感谢您对作者Miya的打赏,我们会更加努力!    如果您想成为作者,请点我

发表我的评论
取消评论

表情
{wƺ?7yB]]|Ų$vOKޜӖM{9Ic[ KޒK)kK ! rO PےkJWoHeǹp__gaKsy3<33 QXm|`8Gh :/;ϝ&T2pꦓ'ܴkME$A G/>! fQzHٮ"4!n@3C~h,ErWFh0eA$!j U3C$CScdxȮ"̐rԐM퇺E`ʚ % >i/Ád2E/BVeSJ3te P(r\ ) \) O$Jm3=v4e_~vݹZqf){޸KudfdUb} !v+MHP')J7q5 2PcV[f8(/n!%z3dE ssMPQ+jjj7A{5E&NT׹޸_`隠F`0*AFK:D ۭ=1Y=CPɐj4ItːqKt -JoY* iA3~7D)<(vZ>MSVb?)~+d7q#6q :.j::3up$XI͓1zFS3~LP+"$ϒZo8Ȫ%TiQ*0Vi~gX*Ɛ fϕUu>tB-"g@L!0' Db"E GJ9ƒHd'L!.XN׊G @GS _hcnc( f8RdE1P*)C! P*3r>&/=:4˺Jq¦K83VCЭO8{̘1cA=c: n zAH4V)ґH!3|.!-󡮃SWV3fKh42ga?ԇ̂S'",GE գj1yУ>nR9O4E%|V΅vac@6BCPUTgD"khHHR2AC] "0[nIIT$Q,I3<羟lfIcdKdL=>x0;ŲLKL:% |ӁpR'R͒1U@:ݞn `h$R=ހⵖWΔp9Cchf[V?BBXS2Cl3z`cvی\3)܈g@#fLGG@<5Թάېښ\(|.b@>釪lPa!qO5 At8;U4LJC0L(DjFe`t L(d$bI&$3 pkrE ^p8R gυc91j̛TcB鼷px𹐫D$M,6FcSAz9!풋@)jeE+&D'FIC݄/Qk'hT2U35 @:ź3W7Abk:n"bT=,% 9vQ*jU$4TK8 ˲]:2 $!K{W("n<-fsRZD1!I̥\xN`$\2-2lRYBR1&fDJ2Ȑ@Qvph♨" :Їɋ,#Ya I 0T恔EVDri$dB0ԮpnHh:mi^bb: t4%8!SR0$B$L.b9 A^xi N.N i&E (ɮo瑫xl1EIpRB/Si:ͧxPbD2 uR߼fa@@sXO V`$ '|@4R2 ɧyD$6 C.Œ%(_M7Iwa (mQH cR-qĦL%yFhP0ʱD*A%hP,EF`ey h\[;~"B -G;Wj?϶g+{f^ؓ7곍]Z+S#?_vG׿wF+%gf^t}gܭM]Z8^Xgo۫73ׇ B[JgbUj<ʵzvf~ثX)BEE4I?Y#hƣ9/* S ji( Zăɮxgo.LEl.I10bAV$D[)MdU5πJOҊ@VϑY{t;G"]~e! ɝ`AMՊC*L!d~<*R?٧8pg|w/_SO+'pNSXG(PEh)5S eg||Gs\GTN4< m4OB0BY %hyckr9䎐:ք]yc"& ,2T%eY5猼Vo4w=`OyhpAݷ}k]ҡbRYQ:Zazk'V%,hRCQ#IJ6XZ`WVKe!. Fz& 9I=~~k~v׹>S{I FpF6F B!x T TFYaPM@(e!=qx,}I*V.oh Z\+0gʦK\IHQSѢI@Àf|/Df?\Z0G0o b L(Y(=zBDSrJQE~ϯ_Wo#iVLDf{ S|#~sYgyq/lLYJlUf;w_m^͞i3T |AAՃ?l?߳O//n|J5dz yhEM5nxvJ[m2:Af%ku:j0@li6!z"Pw,:g4JQbDⷓo]oe*tSmZP=[Cc`e P hxːh_;Tn[NuEFKql3–_YxQW(u 2\Gq{=:AT*$½qn.m& `T+A8fo#-Xwf絸OJd/\/1?84p{ u2vmLk?. PϠ:󭻸&ZM dSĜr E@'DKL2L&EJ <Y!rL fIlg]W޷1(8-eYY/e"?>0uꄪ]nG2ۛe)0WE-(6KryE' %a_*MKh$.y:%"Lr !iKp),HpH/p" Aw(xf&WL+զǵYQS (Gjff=]~ʜ$}NfKpJ/ЅZVuFn_2#gfvkΞ秬Q$ӳ ٿVPw|pߩ'_D/,: @?LTdOE%inI.H4\C]~'key`?XՊˣ{<~e-ARz犵ʪ>rvkuꘛzWԥMHM9YG#{ v9~eg}[.hTgskyp޹@ߩx5UĜk˗ CRҵ͡Ԋq0&*f'\v6~IͲNp;l}uE#D?~m6YUe%6{ &[=Z,@?PiϘِ:R= ]e:AsP> ?Q̠91asD>w2P? IDZeQ\!61umaZO׹R^7?ծ-$bZ.BЭ!P/پ5U-+l$_5FR96㟶%7LԱݾ:v QBf3j-@Q4ڬf&7K#+[&9B\Tl9U쉄)>{!qOGiu#4BQ}JF̐1o͆a\Ps;6K$1pv؏ %uU l' 9/P4?g Hp>ffN[P+t,#UOԘ&szle?չxɾl ] gH\ZXDMq\ FS}B$+G'h CsTQK`oʃJE N%BeHOnua4CxʦCf 3YF؍{ 4srFol5p5Ey Mצ.W.OدX3!i aKSG/^*=۳ώ7x67ˌ,̤~iF9s=+0.`\ Ҥ4hq74hmO|uS @ř]t&9ҏέE{쮵zӽscM.UI+ eO?tpu2kWV0h$RMJ}'gv!gW4sتd?trY:c7)Ֆ/Y˯Z衅~cKěk .KhwRZSbǁ}cཔXP"xw%^ٔi7{ HQ%>(OStITBtO)bd2JsI*NpIL_ '<g)s.FK)R<~x9z9g̓ыQ\`zF < 6eDe& w!tCE$YgH|3D[7soKsߞQ4ܨM]rZ*BŗKP=UW#mC'BlmЗ_VOڅEkb-b&u'P!\F.^Z$DM1Iڀ!Y0odH$4 5Cʹ'L]78gM ͆v8F1)t=q}^c8&*xyF(<L잁`4\E` zx?>54mDEYw::PͶkgؗCIhq܈\Y֎}h;qo[+ZZ$ AF p1ja'UM=[F(B'jAϱLc ;m47lnFBB{B$`нcŃ[6f~\)`s {1hEKRFA. .""" ņizQ\rnI,@ z 4яZj?O \KzA!P:3@jDžykzelLi j" @0dC'۾nYCعNxB,3_ƥ3W4Y˫M3FZ՛Vu Mx +{~yLWٷ/ L]]%j=\8U{Um;Ͻr+8Mً/kƱQwn?'[՟e??9F7cW.`*zm39z]k+Q'Wׯ8wؤ~of psfo(םY#|3oQC{{ybk˓Wh}u޾}X}ݸU}\_X-^N/Zի+wZzj<_]Fy9~e;MǾ= MۙetEf|KoiidNbF`$QrtIri$`2i@' 4dseSCl<E'h~SdU`[cL$ ANVEmQm6SpvbG;1bceĪV6VF[IUCCщ(D)~D4u2p3Nr5?\WMO۪Nؗ'>=רUOv!:bW8'yVg((KmWĮjhf6C#kqy{p\b48vWR98lAUsFh8zrܞ3Q:`fwH&[ל7O:ʭVn9MwqR 26һ4YjؽX\w׿{bUÿdOOF4G3֘O>tɪNf˦)&ꋗc3>,ܲތo^|]#EASa2$Pʆs~mnl#&Qjw[WR, =rƾ/]aOXxL;иM.{l 5{{GWkSjZv4ݯ޴V]VKnIC˙@T .y&:2D(̶N8cy̼U^{uz&<4wn7nDTvfb* :tt%bG{Cu7K.VYk?߯]Xgo6gA(m=}%j0 }j#΃hř]$e6uؑ/Wh,'_7kSw_j7QM Q EQړ1tjSQ`H'@%U~<'MMӐ)JJCH03la>)ǐ"'2C.AAs"t*?|+<<R ݢiNDY䨄, s4GQ9JR"A rȃ4%JT.@;KN/:<i$fj»Tb%/*f >/¹jɝxr%|$[x O|/Bq>EP1 J;&T/;" 0aCK1P& ^Ea4݌M.EIŕca.HĈii 8-Xa(b~zue\v8z8Jh|Cf{Ythkmy}}}w#'㈟2M~ Dv{[ zNe] J:J&ɗd+rD&ч@a3Ok-A/wdbb