gpt4 book ai didi

iOS 表格 View 。自定义单元格始终具有 320 宽度和 44 高度的内容 View

转载 作者:行者123 更新时间:2023-11-28 21:45:29 25 4
gpt4 key购买 nike

所以我在我的 UIViewController 中以编程方式设置 frameUITableView 的设置,然后使用自定义 UITableViewCell 用数据填充它。问题是自定义单元格 ALWAYAS 有一个 framecontentView 320 宽度和 44 height 即使我用 initWithFrame 设置了它。

我的代码:

创建表:

UITableView *pickPlayerNameTable = 
[[UITableView alloc] initWithFrame:CGRectMake(10,
15,
(viewSize.width - 20),
4 * (viewSize.height/5) - 15)];

pickPlayerNameTable.backgroundColor = [UIColor clearColor];
pickPlayerNameTable.separatorStyle = UITableViewCellSeparatorStyleNone;
// playerNameTable.

[self.view addSubview:pickPlayerNameTable];
[self.view bringSubviewToFront:pickPlayerNameTable];

//set the controller as the tables delegate and data source
pickPlayerNameTable.delegate = self;
pickPlayerNameTable.dataSource = self;

cellRowForIndexpath 方法:

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

NSString *cellIdentifier = @"playerNameSellectionCell";

PlayerNameCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];


if(cell==nil)
{
cell = [[PlayerNameCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}

//set the label to the corresponding player
cell.playerNumberLabel.text = [NSString stringWithFormat:@"Παίκτης %ld:", (indexPath.row + 1)];

return cell;
}

最后是自定义单元格,initWithSTLye 方法:

//override initWithStyle for custom cell
-(id) initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier
{
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];

//if initialized successfully, create ui
if(self)
{
//get the cell's frame size
CGSize cellSize = self.contentView.frame.size;
//CGSize viewSize = self.frame.size;
self.backgroundColor = [UIColor blueColor];

//set up the player number label
self.playerNumberLabel = [[UILabel alloc] initWithFrame:CGRectMake(8.0, 4.0, (cellSize.width/2 - 16), (cellSize.height - 8))];
[self.playerNumberLabel setFont:[UIFont fontWithName:@"Aka-AcidGR-ScrachThis" size:30]];
[self.playerNumberLabel setTextColor:[UIColor whiteColor]];
[self.playerNumberLabel setTextAlignment:NSTextAlignmentLeft];
[self.playerNumberLabel setAutoresizingMask:UIViewAutoresizingFlexibleWidth];

//add label to cell
[self.contentView addSubview:self.playerNumberLabel];

//set up the textfield for the cell
self.playerNameTextField = [[UITextField alloc] initWithFrame:CGRectMake( cellSize.width/2, 4.0, (cellSize.width/2 - 8), (cellSize.height - 8))];
[self.playerNameTextField setBackgroundColor:[UIColor whiteColor]];
[self.playerNameTextField setBorderStyle:UITextBorderStyleRoundedRect];

[self.contentView addSubview:self.playerNameTextField];

}

return self;
}

以及当前最终结果的图像:

Current cell Result

如您所见,文本字段既不是从中间部分开始的,也不是宽度的一半,那是因为它的宽度始终为 320,即使 tableview 小于该宽度(运行时的情况) iphone 5) 或更大 (iphone 6)。

有什么帮助吗?谢谢。

最佳答案

您可以使用委托(delegate)方法来设置高度:

// For swift:
func tableView(_ tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat

// For Objective-C
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

关于iOS 表格 View 。自定义单元格始终具有 320 宽度和 44 高度的内容 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30393451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com