我在UIViewController
内的UIView
中有三个子视图,例如subview1,subview2,subview3。
我对它们使用约束,当点击按钮时我在中心显示的约束是这些,
问题:
当我运行应用程序并在button
进入正确位置时单击subview
。但是当我解雇它并再次尝试打开它时,UIViewcontroller
会改变它的位置并进入view
的左上角,
正如您在屏幕截图中看到的那样,但我想在每次点击UIViewcontroller
的中心中的按钮时显示 - (IBAction)Precord:(id)sender {
_DateView.hidden=NO;
[self.DateView bounceIntoView:self.view direction:DCAnimationDirectionLeft];
}
。
我很困惑,约束是正确的,但是当我们再次打开它时,它总是会改变它的位置。
我的代码是,
public void setupcolor() {
table_desc.getTableHeader().setBackground(new Color(51,122,183));
table_desc.getTableHeader().setOpaque(false);
table_desc.getTableHeader().setForeground(Color.BLACK);
table_desc.getTableHeader().setFont(new java.awt.Font("Noto Sans", 0, 14));
}
故事板中的内容是这样的, enter image description here
答案 0 :(得分:1)
这取决于您解雇View的方式。我只是尝试下面的代码,它对我有用
- (IBAction)btn_Tapped:(id)sender {
_smallView.hidden = false;
[_smallView bounceIntoView:self.view direction:DCAnimationDirectionLeft];
}
- (IBAction)hide_Tapped:(id)sender {
_smallView.hidden = true;
}
基本上我只是隐藏视图。并且当btn_Tapped时,每次在中心显示带有弹跳动画的视图时。让我知道你怎么去!
答案 1 :(得分:0)
试试这个
yourSubView.center = CGPointMake(yourMainView.frame.size.width / 2,
yourMainView.frame.size.height / 2);
答案 2 :(得分:0)
以编程方式添加约束的简单方法。根据您的愿望大小进行修改。
注意1:toItem:self,其中self只是你添加了subView的视图。
注意2:必须将SubView添加到self或自我的subView。
subView.translatesAutoresizingMaskIntoConstraints = false
NSLayoutConstraint(item: subView, attribute: .centerX, relatedBy: .equal, toItem: self, attribute: .centerX, multiplier: 1.0, constant: 0).isActive = true
NSLayoutConstraint(item: subView, attribute: .centerY, relatedBy: .equal, toItem: self, attribute: .centerY, multiplier: 1.0, constant: 0).isActive = true
NSLayoutConstraint(item: subView, attribute: .height, relatedBy: .equal, toItem: self, attribute: .height, multiplier: 0.5, constant: 0).isActive = true
NSLayoutConstraint(item: subView, attribute: .width, relatedBy: .equal, toItem: self, attribute: .width, multiplier: 0.5, constant: 0).isActive = true
我建议在Storyboard中添加约束。更易于查看/阅读,清除代码和错误验证器。
关于你的问题,我会说这是一个动画问题。在添加视图之前,再次运行设置视图框架/约束的方法(以重置动画位置修改)。
或者就在动画完成时,不是隐藏视图,而是从超级视图中删除它。当你需要它时,再次添加它。