亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

IOS 九宮格布局實現方法

2020-07-26 03:11:05
字體:
來源:轉載
供稿:網友

以前剛開始搞iOS的時候大部分都是通過計算frame來布局視圖,搞著搞著貌似都是用自動布局來搞定了,因為自動布局實在太方便、太好用了,所以當我昨天突然回看以前代碼的時候突然看到了以前寫的九宮格布局,感覺很多東西都忘了,所以今天特意在這里記錄一下,并且通過幾個簡單的宏定義來完成布局的需求,具體大家看代碼吧,都有注釋 很好懂:

//// ButtonContainerView.h// chemuchao//// Created by 遇見遠洋 on 16/3/7.// Copyright © 2016年 zhaoxiaolu. All rights reserved.//#import <UIKit/UIKit.h>//按鈕點擊blocktypedef void(^spitlotBtnClick)(UIButton * btn);@interface ButtonContainerView : UIView@property (nonatomic,copy)spitlotBtnClick spitlotBlock;/**<<#展示對話內容的tableview#>*/@end

這里給大家推薦一個寫注釋的好方法吧,在聲明屬性的時候,我們如果想在別的地方調用這個屬性的時候在下方有提示 如圖:

只需要跟我在上面聲明屬性的時候一樣 在最后加上

/**<這是要寫的提示文字*/

使用這種方式聲明的屬性,在外面調用的時候就會有提示,好像跑題了,接下來點M的代碼吧:

//// ButtonContainerView.m// chemuchao//// Created by 遇見遠洋 on 16/3/7.// Copyright © 2016年 zhaoxiaolu. All rights reserved.//#import "ButtonContainerView.h"#import "UIView+Extension.h"http://狀態欄高度#define kStateHeight 20//總行數#define kRows 2//總列數#define kCols 4//九宮格個數#define kCount 8//九宮格之間的間隙#define kMargin 5//字體大小#define kFont15 [UIFont systemFontOfSize:15]@interface ButtonContainerView ()@property (nonatomic,strong)NSMutableArray * btns;@property (nonatomic,strong)NSArray * btnTitles;@end@implementation ButtonContainerView- (NSMutableArray *)btns{  if (!_btns) {    _btns = [NSMutableArray array];  }  return _btns;}-(NSArray *)btnTitles {  if (!_btnTitles) {    _btnTitles = @[@"堵成狗",@"堵成翔",@"路太窄",@"沒燈",@"路不平",@"積水多",@"顛簸",@"路太臟"];  }  return _btnTitles;}- (instancetype)initWithFrame:(CGRect)frame{  if (self = [super initWithFrame:frame]) {    [self setupUI];  }  return self;}- (void)setupUI {  for (int i = 0; i < kCount; i++) {    UIButton * btn = [[UIButton alloc]init];    [btn setTitle:self.btnTitles[i] forState:UIControlStateNormal];    [self addSubview:btn];    btn.layer.borderWidth = 1;    btn.layer.borderColor = [UIColor redColor].CGColor;      btn.titleLabel.font = [UIFont systemFontOfSize:13];    [btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];    [btn addTarget:self action:@selector(spitlotBtnClick:) forControlEvents:UIControlEventTouchUpInside];    [self.btns addObject:btn];  }}-(void)layoutSubviews {  [super layoutSubviews];  [self.btns enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {    UIButton * btn = obj;    btn.tag = idx;    //行號    NSUInteger row = idx/kCols;    //列號    NSUInteger col = idx%kCols;    CGFloat btnW = (self.width - kMargin*(kCols + 1))/kCols;    CGFloat btnH = (self.height - kMargin*(kRows + 1))/kRows -10;    CGFloat btnX = kMargin + col*(kMargin + btnW);     CGFloat btnY = kMargin + row*(kMargin + btnH) + kStateHeight;    btn.frame = CGRectMake(btnX, btnY, btnW, btnH);  }];}#pragma mark 按鈕點擊事件- (void)spitlotBtnClick:(UIButton *)sender {  NSAssert(self.spitlotBlock != nil, @"傳入的block不能為空");  //執行block  self.spitlotBlock(sender);}@end

你只需要更換幾個宏定義就可以定制你的九宮格布局了,例如總行數、總列數、九宮格個數,簡單吧 復用性還是很高的,當然對于使用自動布局的你來說,可以無視我。

希望通過此文能幫助大家開發 IOS九宮格的開發,謝謝大家對本站的支持!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲午夜性刺激影院| 国产美女精彩久久| 怡红院精品视频| 2021久久精品国产99国产精品| 在线观看成人黄色| 国产精品激情av在线播放| 欧美大尺度激情区在线播放| 亚洲成人网久久久| 日本欧美一二三区| 欧美日本中文字幕| 国产一区二区三区网站| 91最新在线免费观看| 国产精品天天狠天天看| 色老头一区二区三区在线观看| 热久久这里只有| 欧美中文字幕在线播放| 欧美国产日韩二区| 欧美一区二区三区图| 国产精品成人一区二区三区吃奶| 国内精品伊人久久| 国产精品免费福利| 日韩美女中文字幕| 亚洲欧美国内爽妇网| 宅男66日本亚洲欧美视频| 精品久久久久久久久久国产| 精品视频—区二区三区免费| 国产97在线视频| 懂色av一区二区三区| 欧美在线观看一区二区三区| 97在线精品视频| 国产一区二区免费| www.日韩免费| 亚洲第一精品福利| 国语自产在线不卡| 最近中文字幕2019免费| 国产精品18久久久久久首页狼| 亚洲视频在线观看网站| 久久精品国产99国产精品澳门| 欧美成人免费一级人片100| 久久天堂电影网| 亚洲国产福利在线| 92版电视剧仙鹤神针在线观看| 亚洲jizzjizz日本少妇| 欧美综合激情网| 日产精品99久久久久久| 成人写真视频福利网| 91久久精品久久国产性色也91| 97久久伊人激情网| 亚洲福利影片在线| 97在线观看免费高清| 在线精品国产成人综合| 日韩av在线一区| 亚洲性xxxx| 国产精品入口免费视| 日韩av资源在线播放| 一区二区中文字幕| 欧洲一区二区视频| 欧美乱大交xxxxx| 久久精品免费电影| 日韩亚洲欧美中文在线| 久久精品视频亚洲| 成人国产精品免费视频| 深夜福利日韩在线看| 日韩av一区在线观看| 午夜精品久久久久久久白皮肤| 国产精品影片在线观看| 欧美性感美女h网站在线观看免费| 精品国内产的精品视频在线观看| 国产精品福利在线观看| 一区二区三区视频免费| 91精品久久久久久久久久另类| 日日狠狠久久偷偷四色综合免费| 久久中文字幕国产| 欧美精品久久久久| 国产日产欧美a一级在线| 欧美亚洲成人精品| 国产激情久久久| 日韩免费av一区二区| 国产日产欧美a一级在线| 欧美大片大片在线播放| 久久免费在线观看| 亚洲精品成人久久久| 国产午夜精品视频| 国产亚洲精品久久久久久777| 国产亚洲成精品久久| 国产精品av在线播放| 日韩视频免费观看| 免费成人高清视频| 色午夜这里只有精品| 亚洲va欧美va国产综合剧情| 日韩成人高清在线| 亚洲aⅴ男人的天堂在线观看| 欧美另类老肥妇| 欧美成人免费va影院高清| 欧美精品久久久久久久| 成人黄色在线播放| 性色av香蕉一区二区| 亚洲欧美日韩国产中文| 欧美洲成人男女午夜视频| 国产mv久久久| 91国产精品91| 成人午夜小视频| 亚洲精品欧美一区二区三区| 亚洲在线免费视频| 亚洲国模精品一区| 日韩a**站在线观看| 亚洲精品动漫久久久久| 精品少妇v888av| 日韩精品视频在线免费观看| 欧美日韩免费网站| 91人成网站www| 久久久久这里只有精品| 亚洲影院高清在线| 色先锋资源久久综合5566| 中文国产亚洲喷潮| 久久久久久久久久久国产| 激情av一区二区| 亚洲视频在线观看视频| 国产99视频在线观看| 欧美成人四级hd版| 狠狠久久亚洲欧美专区| 欧美黄色性视频| 国产69久久精品成人看| 成人精品福利视频| 国内精品久久久久久久久| 奇米四色中文综合久久| 亚洲国模精品私拍| 亚洲品质视频自拍网| 久久影院模特热| 中文字幕日韩综合av| 亚洲在线视频福利| 国产精品久久久久久亚洲影视| 国产中文字幕日韩| 日韩中文字幕视频在线观看| 亚洲欧洲一区二区三区在线观看| 欧美激情久久久久久| 国模吧一区二区三区| 日本一区二三区好的精华液| 欧美xxxx18性欧美| 亚洲综合在线中文字幕| 最近2019中文字幕在线高清| 亚洲欧美国产日韩天堂区| 97色在线播放视频| 精品一区二区亚洲| 中文字幕国产日韩| 国产视频在线一区二区| 日韩久久精品成人| 97超级碰碰碰久久久| 亚洲精品一区二区三区不| 在线观看欧美日韩国产| 成人黄色大片在线免费观看| 91精品国产综合久久香蕉922| www.久久撸.com| 日韩在线视频导航| 精品久久久久久久久久久| 欧美情侣性视频| 亚洲午夜激情免费视频| 国产精品成人一区二区三区吃奶| 精品性高朝久久久久久久| 91在线视频精品| 亚洲人成电影网站| 亚洲嫩模很污视频| 中文字幕在线亚洲| 精品日韩美女的视频高清|