xib-基本使用,tableView篇,以及Xib實現(xiàn)自適應(yīng)高度

本文適合沒有使用過xib的小白看, 包含約束的基本設(shè)置, 以及用xib實現(xiàn)tableView的自適應(yīng)

首先,創(chuàng)建一個ViewController,并勾選Also create XIB file,然后托進一個TableView并設(shè)置簡單約束,使tableView對上,下,左,右距離為0, 如圖1-1

圖1-1

然后點擊Add按鈕, 即添加完約束调炬。

創(chuàng)建一個TableViewCell類, 同樣勾選Also create XIB file。

首先, 要拖入一張圖片, 使他實現(xiàn)距左10, 距上10, 距下10,寬高比為1:1且寬度為父視圖的0.25舱馅。如下列圖所示

設(shè)置距上,距左和寬高比

要實現(xiàn)寬度為父視圖的0.25,需要右鍵按住圖片,然后拉向父視圖, 然后選擇Equal Widths,然后再調(diào)整比例缰泡。

子視圖與父視圖約束關(guān)聯(lián)

然后調(diào)整寬高比例和子視圖寬度與父視圖的比例。

找到需要調(diào)整的約束,并點擊

分別調(diào)整Multiplier為1和0.25

然后我們再加一個標題與內(nèi)容, 先托入一個label,按住command鍵選中2個, 點擊如圖按鈕

這里我們實現(xiàn)上對齊,并且label距左10,距右10,并且要設(shè)置label的高度為50, lines為0用于自適應(yīng)

這個地方約束依次往下為, 左, 右, 上, 下對齊,垂直中心對齊, 水平中心對齊, 基線對齊, 和父視圖垂直中心對齊, 和父視圖水平中心對齊代嗤。

這里可以設(shè)置label的屬性,如字體,對齊方式,行數(shù)等等

再次拖入一個label,并設(shè)置距左10,距上10,距右10,距下10, 并且設(shè)置lines為0

設(shè)置約束

最終效果

然后我們就需要設(shè)置屬性關(guān)聯(lián)了棘钞。

點擊此處,然后右鍵點擊tableView拖入代碼中,設(shè)置屬性名即可

點擊tableView到File's Owner可以設(shè)置代理

然后在.m文件里寫相關(guān)代碼,如下

#import "TableViewVC.h"#import "TableViewCell.h"#define cellIdentifier @"TableViewCell"@interface TableViewVC ()@property (weak, nonatomic) IBOutlet UITableView *tableView;

@property (nonatomic, strong) NSMutableArray *dataArray;

@end

@implementation TableViewVC

- (void)viewDidLoad {

[super viewDidLoad];

_tableView.estimatedRowHeight = 50;

[_tableView registerNib:[UINib nibWithNibName:cellIdentifier bundle:nil] forCellReuseIdentifier:cellIdentifier];

[self generateData];

}

- (void)generateData{

_dataArray = [NSMutableArray array];

NSMutableArray *imageArray = [NSMutableArray array];

for (int i = 22; i < 40; i++) {

[imageArray addObject:[UIImage imageNamed:[NSString stringWithFormat:@"WechatIMG%d", i]]];

}

NSInteger count = arc4random() % 100 + 10;

for (int i = 0; i < count; i++) {

NSMutableDictionary *dic = [NSMutableDictionary dictionary];

int titleCount = arc4random() % 100 + 30;

int contextCount = arc4random() % 100 + 30;

NSString *title = [NSString string];

NSString *context = [NSString string];

for (int i = 0; i < contextCount; i++) {

if (i < titleCount) {

NSInteger titleCount = arc4random() % 64 + 26;

NSInteger contextCount = arc4random() % 64 + 26;

title = [NSString stringWithFormat:@"%@%c", title, titleCount];

context = [NSString stringWithFormat:@"%@%c", context, contextCount];

}else{

NSInteger contextCount = arc4random() % 64 + 26;

context = [NSString stringWithFormat:@"%@%c", context, contextCount];

}

}

[dic setObject:title forKey:@"titleString"];

[dic setObject:context forKey:@"contextString"];

[dic setObject:[imageArray objectAtIndex:arc4random() % imageArray.count] forKey:@"image"];

[_dataArray addObject:dic];

}

[_tableView reloadData];

}

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

return _dataArray.count;

}

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

{

return UITableViewAutomaticDimension;

}

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{

TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];

cell.dic = [_dataArray objectAtIndex:indexPath.row];

return cell;

}

- (void)didReceiveMemoryWarning {

[super didReceiveMemoryWarning];

}

@end

在cell里邊同樣拉控件屬性約束到代碼中, 并在set方法里賦值。

.h中為

@property (weak, nonatomic) IBOutlet UILabel *contextLabel;

@property (weak, nonatomic) IBOutlet UILabel *titleLabel;

@property (weak, nonatomic) IBOutlet UIImageView *picture;

@property (nonatomic, strong) NSDictionary *dic;

.m中為

- (void)setDic:(NSDictionary *)dic

{

if (dic) {

_dic = dic;

_picture.image = [dic objectForKey:@"image"];

_titleLabel.text = [dic objectForKey:@"titleString"];

_contextLabel.text = [dic objectForKey:@"contextString"];

}

}

這里特別說下自適應(yīng), 需要約束從上到下都設(shè)置, 然后給tableView一個預(yù)加載高度, 并且在高度返回方法里返回UITableViewAutomaticDimension干毅。

完成效果如下圖

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宜猜,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子硝逢,更是在濱河造成了極大的恐慌姨拥,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,734評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件渠鸽,死亡現(xiàn)場離奇詭異叫乌,居然都是意外死亡,警方通過查閱死者的電腦和手機拱绑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,931評論 3 394
  • 文/潘曉璐 我一進店門综芥,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人猎拨,你說我怎么就攤上這事⊥雷瑁” “怎么了红省?”我有些...
    開封第一講書人閱讀 164,133評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長国觉。 經(jīng)常有香客問我吧恃,道長,這世上最難降的妖魔是什么麻诀? 我笑而不...
    開封第一講書人閱讀 58,532評論 1 293
  • 正文 為了忘掉前任痕寓,我火速辦了婚禮傲醉,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘呻率。我一直安慰自己硬毕,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,585評論 6 392
  • 文/花漫 我一把揭開白布礼仗。 她就那樣靜靜地躺著吐咳,像睡著了一般。 火紅的嫁衣襯著肌膚如雪元践。 梳的紋絲不亂的頭發(fā)上韭脊,一...
    開封第一講書人閱讀 51,462評論 1 302
  • 那天,我揣著相機與錄音单旁,去河邊找鬼沪羔。 笑死,一個胖子當(dāng)著我的面吹牛象浑,可吹牛的內(nèi)容都是我干的任内。 我是一名探鬼主播,決...
    沈念sama閱讀 40,262評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼融柬,長吁一口氣:“原來是場噩夢啊……” “哼死嗦!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起粒氧,我...
    開封第一講書人閱讀 39,153評論 0 276
  • 序言:老撾萬榮一對情侶失蹤越除,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后外盯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體摘盆,經(jīng)...
    沈念sama閱讀 45,587評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,792評論 3 336
  • 正文 我和宋清朗相戀三年饱苟,在試婚紗的時候發(fā)現(xiàn)自己被綠了孩擂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,919評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡箱熬,死狀恐怖类垦,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情城须,我是刑警寧澤蚤认,帶...
    沈念sama閱讀 35,635評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站糕伐,受9級特大地震影響砰琢,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,237評論 3 329
  • 文/蒙蒙 一陪汽、第九天 我趴在偏房一處隱蔽的房頂上張望训唱。 院中可真熱鬧,春花似錦挚冤、人聲如沸况增。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,855評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽巡通。三九已至,卻和暖如春舍哄,著一層夾襖步出監(jiān)牢的瞬間宴凉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,983評論 1 269
  • 我被黑心中介騙來泰國打工表悬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留弥锄,地道東北人。 一個月前我還...
    沈念sama閱讀 48,048評論 3 370
  • 正文 我出身青樓蟆沫,卻偏偏與公主長得像籽暇,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子饭庞,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,864評論 2 354

推薦閱讀更多精彩內(nèi)容