更改子视图的所有者?

Posted

技术标签:

【中文标题】更改子视图的所有者?【英文标题】:Change owner of subView? 【发布时间】:2015-03-26 18:35:49 【问题描述】:

我正在尝试实现一个动画,其中UITableViewCell 的图像展开以填满整个视图。我已经掌握了基础知识,但图像卡在navigationBar 后面。如何更改UIImageView 使其成为当前视图的subView

这是我目前拥有的动画:

UITableViewCell *cell = [_tableView cellForRowAtIndexPath:indexPath];
UIImageView *imageView = [cell viewWithTag:1];
UIView *cellView = [cell viewWithTag:2];
[UIView animateWithDuration:0.5
                      delay:0
                    options:UIViewAnimationOptionCurveEaseIn
                 animations:^(void)
                     

                         imageView.contentMode = UIViewContentModeScaleAspectFill;
                         [cellView bringSubviewToFront:imageView];
                         [imageView setFrame:CGRectMake(0, -64, self.view.frame.size.width, self.view.frame.size.height+64)];
                     
                 completion:^(BOOL finished)
                     
                         if(finished)
                         
                             [self.navigationController presentModalViewController:readerViewController animated:YES];
                         
                     ];

【问题讨论】:

只需致电[someOtherView addSubview:imageView];。这会将其从当前父视图中移除,并将其添加到您选择的任何“someOtherView”中。 【参考方案1】:

问题在于表格在顶栏下方延伸。

在情节提要中选择您的表格视图控制器,然后在属性检查器中取消选择顶栏下的扩展边缘属性。

这会将表格的顶部限制在导航栏下方。

如果您希望它位于导航栏的前面,您可以隐藏导航栏,然后可以看到图像。

【讨论】:

以上是关于更改子视图的所有者?的主要内容,如果未能解决你的问题,请参考以下文章

使用 UIAppearence 更改 UIViewController 的直接子视图的背景颜色

更新一些子视图而不更新所有子视图

UIStackView:基于所有子视图的一致高度,即使它们丢失

超级视图框架更改后更新子视图的约束

子视图更改SwiftUI后更新视图

多选模式下的 UITableView 删除选定单元格中所有子视图的背景颜色