【问题标题】:Update top space constraint for view after hide search bar view隐藏搜索栏视图后更新视图的顶部空间约束
【发布时间】:2015-06-13 11:38:59
【问题描述】:

我有自定义 UIView 和 UISearchBar 作为视图控制器视图上的子视图放置。

在某些情况下,我需要隐藏搜索栏视图,然后我想调整自定义视图的大小。因此,假设搜索栏的高度为 44 pt。如果它在顶部可见,那么我的自定义视图应该以 y = 44 开头。但是如果我将搜索栏设置为隐藏,那么我的自定义视图的 y 位置应该等于 0。

我使用故事板并设置了所有约束,我想立即更新连接到顶部布局指南的顶部空间约束。默认情况下,它等于 44 pt。但是当我隐藏搜索栏时,我想将顶部空间设置为 0,并将自定义视图的高度增加 44 pt。

我想自定义视图的所有子视图都会自动更新。

这是视图放置在视图控制器的 self.view 上的方式:

***************
**search bar***
***************
**custom view**
***************

隐藏搜索栏后应该是这个样子并且完全覆盖超级视图:

***************
**           **
**custom view**
**           **
***************

【问题讨论】:

    标签: ios ios7 ios8 autolayout


    【解决方案1】:

    如果你想隐藏搜索栏然后创建高度约束和顶部空间约束的出口,如下所示。

    @property (strong, nonatomic) IBOutlet NSLayoutConstraint *searchBarTopSpaceHeight;
    @property (strong, nonatomic) IBOutlet NSLayoutConstraint *searchBarHeight;
    

    并将这些值设置为 0 就像

    _searchBarTopSpaceHeight.constant = 0;
    
    _searchBarHeight.constant = 0;
    

    尝试使用该解决方案。

    【讨论】:

    • 哦,很酷,甚至不知道我们可以为约束创建出口)太棒了。但也许你也知道如何以编程方式制作它。谢谢你的回答)
    • 我只是设置了_searchBarHeight.constant = 0;它也对我有用,谢谢
    【解决方案2】:
    1. 创建一个与搜索栏大小相同的视图并将搜索栏放在里面。设置顶部约束等于超级视图的顶部。
    2. 创建自定义视图并将其顶部约束设置为等于第一个视图底部。
    3. 为第一个视图添加高度约束并创建其余约束。

    要隐藏搜索栏,以编程方式将第一个视图高度约束设置为 0,这将使自定义视图顶部移动到超级视图的顶部。这也可以动画化。

    【讨论】:

    • 如果我将搜索栏的高度限制设置为 0,它会起作用吗?或者我需要在任何情况下创建额外的视图并将我的搜索栏放在那里。您还可以设置代码示例如何以编程方式将高度约束设置为 0?谢谢
    • 你可以跳过第一个视图,直接使用 UISearchBar。要以编程方式将高度约束设置为 0,请创建一个 NSLayoutConstraint 属性并将其连接到在 IB 中创建的约束。 _searchBarHeight.constant = 0;
    【解决方案3】:

    应该是这样的 http://i.stack.imgur.com/dvheh.png

    蓝色视图应该有顶视图的约束和紫色视图的底部约束。不要忘记为蓝色视图设置高度限制。

    - (IBAction)test:(id)sender {
        [UIView animateWithDuration:0.5 animations:^{
            self.heightConstraint.constant = 0;
            [self.view layoutIfNeeded];
        }];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多