适用于 iPad / iPhone 5、6、6+ 的 UITableView 调整大小
Posted
技术标签:
【中文标题】适用于 iPad / iPhone 5、6、6+ 的 UITableView 调整大小【英文标题】:UITableView resize for iPad / iPhone 5,6,6+ 【发布时间】:2014-12-28 23:03:45 【问题描述】:-(void)viewDidLoad
UINib *nib = [UINib nibWithNibName:@"CustomTableViewCell" bundle:nil];
[[self tableView] registerNib:nib forCellReuseIdentifier:@"customCell"];
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
static NSString *CellIdentifier = @"customCell";
CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
//
CustomTableViewCell 设置在具有以下布局的 NIB 中:
内容视图 UIView(占位符视图) UIImageView (customImageView)我希望 ContentView/UIView/UIImageView 根据用于显示 UITableView 的设备的宽度调整大小。可以调整 UITableView 的大小(但我不得不在 layoutSubviews 的 UITableView 的子类中设置 UITableView 的框架,因为 UITableView 不断重置为更小的框架)
- (void)layoutSubviews
[super layoutSubviews];
CGRect screenRect = [[UIScreen mainScreen] bounds];
self.frame = CGRectMake(0, 0, screenRect.size.width, screenRect.size.height);
在继承 layoutSubviews 之后,我已经在 Custom 类的 NIB 中设置了每个视图的大小:
- (void)layoutSubviews
float cellHeight = ...;
CGRect screenRect = [[UIScreen mainScreen] bounds];
self.paddingView.frame = CGRectMake(0,0, screenRect.size.width, 10 );
self.placeholderView.frame = CGRectMake(0, 0, screenRect.size.width, cellHeight);
self.customImageView.frame = CGRectMake(0, 0, screenRect.size.width, cellHeight);
但这似乎只适用于 UITableView 中的每第三行。
这似乎是一种复杂的设置宽度的方法 - 有没有更简单的方法可以做到这一点,是否有解释为什么这只适用于每三行?
谢谢,
【问题讨论】:
【参考方案1】:使用 Autolayout 会更明智,只需在 Interface Builder 中设置约束即可。使用超级视图从各个方面为 tableview 提供约束。同样给自定义单元格提供约束。单元格和表格视图将根据设备宽度本身调整大小。
给tableview的约束如下:Leading to Superview,Trailing to Superview,Top to Superview,Bottom to Superview
同样对tableView Cell中的imageView进行约束:Leading to Superview,Trailing to Superview,Top to Superview,Bottom to Superview
【讨论】:
你能说得更具体点吗?我应该添加哪些约束?以上是关于适用于 iPad / iPhone 5、6、6+ 的 UITableView 调整大小的主要内容,如果未能解决你的问题,请参考以下文章
css iPhone 6 Plus和iPad Air 2媒体查询(Retina HD显示屏)。也适用于类似的Android设备。
css iPhone 6 Plus和iPad Air 2媒体查询(Retina HD显示屏)。也适用于类似的Android设备。
如何限制我的应用仅适用于 iPhone 6 和 6 Plus?