如何根据设备屏幕objective-c设置UITableViewCell高度
Posted
技术标签:
【中文标题】如何根据设备屏幕objective-c设置UITableViewCell高度【英文标题】:How to set UITableViewCell height depending on device screen objective-c 【发布时间】:2018-08-08 07:24:26 【问题描述】:以下是我尝试过的代码,但没有帮助,请检查。
static CGFloat cellDefaultHeight = 180;
CGFloat screenDefaultHeight = [UIScreen mainScreen].bounds.size.height;
CGFloat factor = cellDefaultHeight/screenDefaultHeight;
return factor * [UIScreen mainScreen].bounds.size.height;
【问题讨论】:
您发布的是 Objective-C 代码,而不是 Swift 代码。请正确标记。 是的,你是对的,但我也能理解 swift,所以如果有人可以发布 swift 代码也可以@DharmeshKheni 你到底想要什么? 我得到的 uitableviewcell 高度是 180,它是一个静态高度,但它在 iPhone7 和除 iphone5 之外的所有设备中看起来都不错,所以我需要为所有屏幕设备设置高度。 @FaysalAhmed 高度是根据设备还是根据单元格的内容? 【参考方案1】:在 斯威夫特
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
let screenHeight = UIScreen.main.bounds.height
return (cellDefaultHeight/screenDefaultHeight) * screenHeight
在目标 C
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
CGFloat screenDefaultHeight = [UIScreen mainScreen].bounds.size.height;
CGFloat factor = cellDefaultHeight/screenDefaultHeight;
return factor * [UIScreen mainScreen].bounds.size.height;
【讨论】:
【参考方案2】:这是一个逻辑错误 试试这个。
static CGFloat cellDefaultHeight = 180; //lets suppose its a defualt height for iphone6
CGFloat screenHeight = [UIScreen mainScreen].bounds.size.height;
CGFloat factor = cellDefaultHeight * (screenHeight / 667) //667 is height of iphone 6
return factor * cellDefaultHeight;
【讨论】:
所以我必须将每个设备高度替换为 667。【参考方案3】:你应该使用UITableView
的heightForRowAtIndexPath
委托方法。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
return [UIScreen mainScreen].bounds.size.width;
【讨论】:
以上是关于如何根据设备屏幕objective-c设置UITableViewCell高度的主要内容,如果未能解决你的问题,请参考以下文章
如何在 React Native 中根据设备类型设置强制设备方向?
Objective-C:如何将信号从视图发送到视图控制器以更改视图?
如何根据设备屏幕调整 UICollectionViewCell 的大小