gpt4 book ai didi

objective-c - UITableViewCell setSelectedBackground 无法正确显示框架

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:53:38 26 4
gpt4 key购买 nike

我在 cellForRowAtIndexPath 方法中正确设置 UITableViewCell 的 selectedBackgroundView 时遇到一些困难。我尝试了一些代码变体...

CGRect customFrame = CGRectMake(cell.frame.origin.x + 1.0f, cell.frame.origin.y,
cell.frame.size.width - 22.0f, cell.frame.size.height);

UIView *cellBackground = [[[UIView alloc] initWithFrame:customFrame] autorelease];
cellBackground.backgroundColor = [UIColor colorWith8BitRed:0 green:0 blue:0 alpha:0.1f];
cell.selectedBackgroundView = cellBackground;

使用此代码段,单元格显示出正确的颜色变化,但框架尺寸不是我指定的尺寸(它们似乎是 cell.frame 的尺寸,即使我指定了要使用我的 customFrame 初始化的 View )

我尝试了另一种方法:创建带有子 subview 的父 View 。父 View 的框架与单元格的尺寸相同, subview 的框架包含我的 customFrame 尺寸。当我将父 View 设置为 backgroundView 时,将应用我的框架 customFrame 尺寸。但是,当我尝试将父 View 设置为 selectedBackgroundView 时,我在选择单元格时看不到任何 View 。

CGRect customFrame = CGRectMake(cell.frame.origin.x + 1.0f, cell.frame.origin.y, 
cell.frame.size.width - 22.0f, cell.frame.size.height);

UIView *parentView = [[[UIView alloc] initWithFrame:cell.frame] autorelease];
UIView *childView = [[[UIView alloc] initWithFrame: customFrame] autorelease];

[parentView addSubview:childView];
childView.backgroundColor = [UIColor colorWith8BitRed:0 green:0 blue:0 alpha:0.1f];
cell.selectedBackgroundView = parentView;

似乎很难自定义 selectedBackgroundView 的框架尺寸。任何帮助,将不胜感激。谢谢!

最佳答案

您在自定义 TableViewCell 中需要这个

- (void)layoutSubviews
{
[super layoutSubviews];
self.selectedBackgroundView.frame = CGRectMake(cell.frame.origin.x + 1.0f, cell.frame.origin.y, cell.frame.size.width - 22.0f, cell.frame.size.height);
}

我不得不挠头。这有点愚蠢,因为不管怎样你都需要两倍的帧。当然,您可以使用 define 甚至 UIView 本身的属性,但仍然...

多亏了 Ortwin Gentz,我才能找到它——对他的支持!

关于objective-c - UITableViewCell setSelectedBackground 无法正确显示框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10692725/

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