【问题标题】:setFrame on subviews of tableViewHeader not workingtableViewHeader 子视图上的 setFrame 不起作用
【发布时间】:2012-09-16 06:18:14
【问题描述】:

我有一个 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)确实会在模拟器上反映对其框架的更改,但其子视图不会。如果有任何区别,我启用了自动调整子视图,但启用或禁用的结果相同。

【问题讨论】:

    标签: ios uitableview frame


    【解决方案1】:

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

    【讨论】:

    • 哇,这让我发疯了,我有一个默认位置的按钮,但我在运行时将它设置为“正确”位置,但它不是第一次应用,只有第二个。喜欢:第一次:infoButton: {{541, 504}, {32, 32}} -> {{541, 420.786}, {32, 32}},第二次: infoButton: {{541, 504}, {32 , 32}} -> {{541, 420.786}, {32, 32}},第二次后它保持在正确的坐标,但我不知道它为什么要重置。我关闭了 xib 的自动布局,然后它工作了!不知道发生了什么...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多