我有一个UIView(slidingView2),我正在滑动到屏幕上。我已将slidingView2设置为水平居中在屏幕上。当屏幕上的滑动发生时,视图最终不在水平中心,而是向右10个像素,部分离开屏幕。
但如果我在此屏幕上方显示任何其他模态视图,则关闭模式视图,slideView2位于屏幕中央。
这是用故事板和约束构建的。
它就像显示模态视图一样使slideView2重绘然后将其放在正确的位置?
另一个奇怪的事情是模态屏幕可以随时随地显示。我的意思是,我的slideView2是我滑到屏幕上的第二个视图。如果我在应用程序启动后立即显示随机模态屏幕,则显示slidingView_1然后slideView2,然后slidingView2正确居中。或者,如果我从应用程序启动中删除模态屏幕并在slidingView_1之后但在slideView2之前显示它,那么slidingView2正确居中。因此,只要在slideView2之前的任何时候显示任何模态屏幕,那么slidingView2将正确居中。
有人有任何建议吗?
编辑:
我在这个方面的选择是显示一个transpartent模态视图然后把它带走(即巨大的丑陋黑客)。
或者调用一些使视图完全重绘的方法。我试过这两个都没有用。
[self.view setNeedsLayout];
[self.view layoutIfNeeded];
任何人都知道如何立即重新制作视图?
其他代码: //这里我创造了视图,但关闭了屏幕
-(void)willCreateAndSetupPickLocView {
self.pickLocationView.alpha = 0.0f;
[self willSetupUIForPickLocation];
self.confirmPickupLocationViewLeftsideConstraint.constant = 380.0;
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:0.0f animations:^{
[self.view layoutIfNeeded];
}];
}
//这就是我现在的动画
-(void)showSetPickupHoverView {
self.pickLocationView.alpha = 1.0f;
[self layoutBackButton];
if(nil == self.pickLocationView) {
[self willCreateAndSetupPickLocView];
}
self.confirmPickupLocationViewLeftsideConstraint.constant = 10.0f;
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:0.7f animations:^{
[self.view layoutIfNeeded];
self.pinMarkerView.hidden = NO;
}];
}
答案 0 :(得分:0)
问题是没有为滑动视图设置宽度,高度,左,右,顶部和底部的常量,也没有为所有子视图设置这些常量。解决方案只是开始为所有这些添加常量。
如果您不想逐个手动添加,请执行以下操作。
编辑>解决所有布局问题