我正在处理与xib文件中的导航栏相关的问题。问题如下:
我添加了一个xib文件,并在其上面手动放置UINavigationBar
,并使用约束使其保持在屏幕顶部。然后我在它下面添加UILabel
,并使用约束使其位于导航栏下方。也就是说,let label.top
等于navigationbar.bottom
。然后我需要添加全屏功能。我添加了一个按钮,按下后,我按照以下代码隐藏了导航栏:
self.navbar.hidden = YES;
导航栏被隐藏,但标签仍以某种方式保持其位置,并且不会移动到屏幕的顶部,这是我期望看到的。
所以问题是:
这个效果是否正常?因为现在隐藏了导航栏,所以约束应该使标签移动到顶部。
如果正常/异常,我该怎么做才能达到我想要的效果。
谢谢你们!任何想法都可以提供帮助!
请原谅我的英语,因为这不是我的母语。
答案 0 :(得分:1)
由于您只是添加导航栏,而不是导航控制器,因此隐藏不起作用。您必须在导航栏上设置高度约束,并在控制器中设置其出口,然后在您要隐藏栏的位置,您必须将constraint.constant设置为零。
答案 1 :(得分:0)
你隐藏导航栏&设置标签的框架。
if(self.navbar.hidden){
// set frame of lable on top aas you required ..
}
希望它对你有所帮助。
答案 2 :(得分:0)
为标签创建顶空约束和高度约束的出口,并在隐藏导航栏时更改该约束常量值,否则将其放置为先前。
示例:
@property (strong, nonatomic) NSLayoutConstraint *lblTopSpaceConstraintValue;
@property (strong, nonatomic) NSLayoutConstraint *lblHeightConstraintValue;
and write condition
if(self.navigationBar.hidden)
{
lblTopSpaceConstraintValue.constant = 0;
lblHeightConstraintValue.constant = 0;
}
else
{
lblTopSpaceConstraintValue.constant = 10;//label topspaceconstraint value which you have given previously
lblHeightConstraintValue.constant = 21; //label height constraint value which you have given previously
}
答案 3 :(得分:0)
谢谢大家!我将导航栏的高度约束设置为零,它工作正常!你们刚刚教我很多约束,再次感谢!
答案 4 :(得分:0)
Create IBIOutlet of label top Constraint with navbar.
IBOutlet NSLayoutConstraint* _lblTopNavBarConstraint;
and set value as per the condition.
- (IBAction) move:(id)sender
{
_navBar.hidden = !_navBar.hidden;
_lblTopNavBarConstraint.constant = (_navBar.hidden) ? -20 : 20;
}