gpt4 book ai didi

ios - 更新 UITableViewCell subview 的框架没有效果

转载 作者:可可西里 更新时间:2023-11-01 03:43:45 25 4
gpt4 key购买 nike

我有一个自定义(子类)UITableViewCell,它包含一些 UILabel、一个 UIButton 和一个 NSBlock 作为属性。这个子类称为 ExploreCell。其中两个属性是 UILabel,分别命名为 waitLabellastUpdateLabel

lastUpdateLabel 的内容为 nil 或为空白即 @"" 时,我需要将 waitLabel 垂直向下移动(在Y 轴)10 个像素。我通过检查 NSDictionary 中的一些对象来执行此操作,如我放入 -tableView:cellForRowAtIndexPath: 方法中的以下代码所示。

CGRect frame = cell.waitLabel.frame;

if ([[venue allKeys] containsObject:@"wait_times"] && ([[venue objectForKey:@"wait_times"] count] > 0)) {

frame.origin.y = 43;

}

else {
frame.origin.y = 53;
}

[cell.waitLabel setFrame:frame];

但是,此代码间歇性地工作,并尝试调用 -setNeedsLayout,仍然无法工作。间歇性地,我的意思是在滚动几次后,一两个符合条件的单元格将单元格的原点向下移动 10 个像素,实际上它们的 waitLabel 的框架发生了变化。

请告诉我为什么会发生这种情况,以及如何解决。

最佳答案

这看起来像是自动布局的问题。如果您没有明确关闭它,那么它就会打开。您应该为单元格顶部(或底部)的约束创建一个导出,并在代码中更改该约束的常量而不是设置框架。根据 WWDC 2012 视频,如果您使用自动布局,则您的代码中不应该有任何 setFrame: 消息。

关于ios - 更新 UITableViewCell subview 的框架没有效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15535054/

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