gpt4 book ai didi

Objective-C – cellForRowAtIndexPath 导致按钮框架改变大小?

转载 作者:行者123 更新时间:2023-11-29 04:45:51 26 4
gpt4 key购买 nike

我在这里有点迷茫。 UIButton第一次加载时就可以很好地定位自己。但随后每次调用-tableView:cellForRowAtIndexPath:似乎操纵了 UIButton的框架使其更小。似乎添加到 frame.origin.x它似乎从 frame.size.width 中减去。 UIButton 首先在 -viewDidLoad 中设置像这样:

self.facebookButton = [UIButton buttonWithType:UIButtonTypeCustom];
[self.facebookButton setFrame:CGRectMake(0, 0, 159, 29)];
[self.facebookButton setBackgroundImage:[UIImage imageNamed:@"LoginWithFacebookNormal.png"] forState:UIControlStateNormal];
[self.facebookButton setBackgroundImage:[UIImage imageNamed:@"LoginWithFacebookPressed.png"] forState:UIControlStateHighlighted];
[self.facebookButton addTarget:self action:@selector(loginToFacebook) forControlEvents:UIControlEventTouchUpInside];

我的 cellForRowAtIndexPath 看起来像这样(我没有重复使用单元格,因为我只显示一个单元格):

UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
reuseIdentifier:nil];

// Set the background view of the cell to be transparent
UIView *backView = [[UIView alloc] initWithFrame:CGRectZero];
backView.backgroundColor = [UIColor clearColor];
cell.backgroundView = backView;

[self.facebookButton setCenter:cell.center];

// Magic code that puts the button IN the center of the cell
self.facebookButton.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleLeftMargin | UIViewAutoresizingFlexibleRightMargin;

[cell.contentView addSubview:self.facebookButton];

cell.selectionStyle = UITableViewCellSelectionStyleNone;

return cell;

最佳答案

我看到几个问题:

  1. 您将按钮的中心设置为单元格的中心,这是完全错误的。单元格的中心位于其 super View 的坐标系中,但按钮的中心位于 contentView 的坐标系中。您可能应该使用类似 cell.center = CGPointMake(CGRectMidX(cell.contentView.bounds), CGRectMidY(cell.contentView.bounds)) 的内容,即使在那里,您也会遇到分数来源的问题,具体取决于按钮和 contentView 的大小。

  2. 您尝试在此方法中部分设置按钮,但不是完全设置。您应该在此处重新设置其框架

  3. 您已设置自动调整大小蒙版,以根据 contentView 的移动方式实际缩小(或增大)按钮。这意味着,例如,如果表格进入编辑模式并且出现删除按钮,则您的按钮将会缩小。这也意味着,如果您有一个分组表,按钮将在 -cellForRowAtIndexPath: 之间缩小。以及表格的实际显示(因为单元格本身会缩小以适应分组表格中的填充`

关于Objective-C – cellForRowAtIndexPath 导致按钮框架改变大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9650455/

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