ios - tableViewHeader 的 subview 上的 setFrame 不起作用

标签 ios uitableview frame

我有一个 tableViewHeader UIView,其中包含一些动态元素(准确地说是大小不一的 UILabel)。我在 IB 中设置了 UIView,连接了所有内容,并尝试根据 sizeToFit 之后的标签大小更改框架原点。

如果我在 setFrame 调用后记录新帧,它实际上会显示更新的来源,但它们不会显示在模拟器上。标签改变高度,但原点不变。

- (void)viewDidLoad
{
[super viewDidLoad];
CGRect frame;
CGFloat baseOffset = titleLbl.frame.origin.y;
offset = titleLbl.frame.size.height;
self.titleLbl.text = destObject.title;
self.titleLbl.font = [UIFont fontWithName:@"Avenir-Heavy" size:22];
[self.titleLbl sizeToFit];
frame = titleLbl.frame;
frame.origin.y = baseOffset;
//Get any change in size from the label
offset = titleLbl.frame.size.height - offset;

frame = imageView.frame;
frame.origin.y = frame.origin.y + offset;
self.imageView.frame = frame;

frame = photosBtn.frame;
frame.origin.y = frame.origin.y + offset;
[self.photosBtn setFrame:frame];

frame = detailLbl.frame;
frame.origin.y = frame.origin.y + offset;
self.detailLbl.frame = frame;
baseOffset = self.detailLbl.frame.origin.y;
CGFloat detailOffset = self.detailLbl.frame.size.height;
self.detailLbl.text = destObject.description;
[self.detailLbl sizeToFit];
frame = detailLbl.frame;
frame.origin.y = baseOffset;
self.detailLbl.frame = frame;
detailOffset = self.detailLbl.frame.size.height - detailOffset;
offset = offset + detailOffset;

frame = blueLine.frame;
frame.origin.y = frame.origin.y + offset;
self.blueLine.frame = frame;

self.whereToDiveLbl.font = [UIFont fontWithName:@"Avenir-Heavy" size:22];
frame = whereToDiveLbl.frame;
frame.origin.y = frame.origin.y + offset;
self.whereToDiveLbl.frame = frame;

frame = grayLine.frame;
frame.origin.y = frame.origin.y + offset;
self.grayLine.frame = frame;

frame = CGRectMake(headerView.frame.origin.x, headerView.frame.origin.y, headerView.frame.size.width, grayLine.frame.size.height + grayLine.frame.origin.y + 5);
self.headerView.frame = frame;
}

我曾尝试四处寻找类似的问题,但找不到任何问题。任何人都可以阐明这一点吗?

我应该指出,UIView 本身(即本例中的 headerView)确实会反射(reflect)模拟器上对其框架的更改,但其 subview 不会。如果它有任何不同,我会启用自动调整 subview 大小,但启用或禁用我得到相同的结果。

最佳答案

我发现我在 IB 中的 UIView 在身份和类型下选中了“使用自动布局”...取消选择它解决了我的问题。

关于ios - tableViewHeader 的 subview 上的 setFrame 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12570958/

相关文章:

ios - 当应用程序进入前台时如何重新加载 UITableView 数据? (Xcode 8.3/swift 3)

iframe 中的 JavaScript 不起作用

html - 如何为 HTML 应用程序发出通知

ios - 如何使用 Kingfisher 在 UIButton 的 setBackgroundImage 期间设置 indicatorType

iphone - 获取当前调度队列?

ios - iPad 中的方向框架不改变

python - tkinter 是否可以在同一位置拉出不同的屏幕

xcode - 如何将 iOS UI 测试设置为构建依赖项,如 OCUnit?

swift - 在scrollView中显示图像不正确

ios - 每当内容在 LynnBubbleTableView 框架中增长时,如何移动到 tableview 的底部?