UIView内容剪辑不起作用/ UIView调整大小不起作用

时间:2013-08-28 00:03:07

标签: iphone ios objective-c uiview resize

我遇到了一个问题,其中子视图的剪辑不能始终如一地工作(或者可能是UIView调整大小不起作用)。这是场景:

  • 我有一个UIView(线上方的部分)。实际尺寸较大,以适应搜索栏。我基本上在viewDidLoad上调整它。
  • 单击文本字段时,UIView会展开并显示搜索栏
  • 搜索之后,我崩溃了UIView,但发现在某些情况下UIView没有折叠(见第一张图片)。如果我不隐藏搜索栏,它也会保留。

是否有任何理由发生此问题?我仍在尝试调试并查看是否有任何可能导致此问题的事情(因为某些内容可能会重置为原始大小)。看起来好像一切都正确调整大小,因为即使结果表也正确移动。在预期的调整大小之后,其他必须触发它。任何指针都很受欢迎。我只做了5天的iOS开发,所以我还没有意识到很多事情。

- (void)showAddressField
{
    CGRect headerFrame = self.searchHeaderView.frame;
    headerFrame.size.height = headerHeight + adjustmentSize;
    self.searchHeaderView.frame = headerFrame;

    CGRect tableFrame = resultTableView.frame;
    tableFrame.size.height = tableHeight - adjustmentSize;
    tableFrame.origin.y = headerFrame.size.height + statusBarHeight;
    resultTableView.frame = tableFrame;

    [self renderHeaderBorder:headerFrame.size.height - 1];
}

- (void)hideAddressField
{    
   CGRect headerFrame = self.searchHeaderView.frame;
   headerFrame.size.height = headerHeight;
   self.searchHeaderView.frame = headerFrame;

   CGRect tableFrame = resultTableView.frame;
   tableFrame.size.height = tableHeight;
   tableFrame.origin.y = headerHeight + statusBarHeight;
   resultTableView.frame = tableFrame;

   [self renderHeaderBorder:headerHeight - 1];

}

EDITED

SearchHeaderView只是一个UIView,它是主视图的子视图。它不是表头。我发现如果我在表头中放置一个搜索栏,它的行为非常不可预测,所以我有一个包含搜索部分的UIView,并在它下方有一个UITableView。

抱歉,因为我只有一个多星期的时间从头开始获得一个相当庞大的应用程序,我没有时间等待。我已经改变了我的方法,但即使在赏金到期后我仍会奖励积分。我正在尝试理解与布局有关的一切,因为这几乎是我在iOS应用程序开发中无法解决的唯一问题。

UIView Clip Subviews Issue UIView expanded

2 个答案:

答案 0 :(得分:0)

如果搜索栏位于表格视图标题中,请尝试将标题视图重新分配给表格视图:

[tableView setTableHeaderView:self.searchHeaderView];

如果是节标题,请务必更新委托的

– tableView:heightForHeaderInSection:
– tableView:viewForHeaderInSection:

否则,请发布更多有关searchHeaderView初始化并添加到表中的代码。

希望这有帮助!

答案 1 :(得分:0)

首先,帧已经相对于封闭窗口。您不应该考虑状态栏的高度(假设它指的是屏幕顶部的20px区域)。

我在过去发现您可能需要在视图控制器中实现“layoutSubviews”并计算其中的视图框架。这取决于您的调整大小掩码/如果您启用了自动布局。

正如其他人所说的那样,更多代码会有所帮助...或者至少是nib / xib的相关部分。