1. 程式人生 > >iOS Xib布局某些控件顯示或隱藏<約束的修改>

iOS Xib布局某些控件顯示或隱藏<約束的修改>

update alloc serve view turn make inter init uicolor

對於這個問題使用Masonry是很好解決的。

技術分享

註意:綠色的是label2,當indexpath.section % 2 == 0時,label2不存在。

關鍵代碼如下:

if (indexPath.section % 2 == 0) {

[cell.label2 mas_updateConstraints:^(MASConstraintMaker *make) {

make.height.mas_equalTo(0);

}];

}

代碼如下:

//
//  ViewController.m
//  XibTestDemo
//
//  Created by 思 彭 on 2017/10/19.
//  Copyright ? 2017年 思 彭. All rights reserved.
//

#import "ViewController.h
" #import "TableViewCell.h" #import <Masonry.h> @interface ViewController ()<UITableViewDelegate, UITableViewDataSource> @property (nonatomic, strong) UITableView *tableView; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib.
[self setUI]; } #pragma mark - 設置界面 - (void)setUI { self.tableView = [[UITableView alloc]initWithFrame:self.view.bounds style:UITableViewStyleGrouped]; self.tableView.delegate = self; self.tableView.dataSource = self; self.tableView.backgroundColor = [UIColor clearColor]; self.tableView.tableFooterView = [[UIView alloc]init]; // 註冊cell [self.tableView registerNib:[UINib nibWithNibName: NSStringFromClass([TableViewCell class]) bundle:nil] forCellReuseIdentifier:@"TableViewCell"]; // 行高 // self.tableView.rowHeight = UITableViewAutomaticDimension; // self.tableView.estimatedRowHeight = 100; [self.view addSubview: self.tableView]; self.tableView.estimatedRowHeight = 0; self.tableView.estimatedSectionHeaderHeight = 0; self.tableView.estimatedSectionFooterHeight = 0; } #pragma mark - UITableViewDataSource - (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 10; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return 1; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"TableViewCell" forIndexPath:indexPath]; if (indexPath.section % 2 == 0) { [cell.label2 mas_updateConstraints:^(MASConstraintMaker *make) { make.height.mas_equalTo(0); }]; } return cell; } #pragma mark - UITableViewDelegate - (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { return 0.001f; } - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return 10; } - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section % 2 == 0) { return 60; } return 92; } @end

Demo地址: https://github.com/PengSiSi/XibDemo

iOS Xib布局某些控件顯示或隱藏<約束的修改>