Xcode-ViewDidLayoutSubView
我在viewController内有一个视图,我想在左侧的viewController外启动较小的视图,并在按下按钮时将其设置为中心动画。所以我就这样做了:Xcode-ViewDidLayoutSubView,xcode,view,viewdidlayoutsubviews,Xcode,View,Viewdidlayoutsubviews,我在viewController内有一个视图,我想在左侧的viewController外启动较小的视图,并在按下按钮时将其设置为中心动画。所以我就这样做了: override func viewDidLayoutSubviews() { smallView.center = CGPointMake(smallView.center.x - 400, smallView.center.y) } func textViewDidBeginEditing(textView: UIText
override func viewDidLayoutSubviews() {
smallView.center = CGPointMake(smallView.center.x - 400, smallView.center.y)
}
func textViewDidBeginEditing(textView: UITextView) {
smallView.center = CGPointMake(smallView.center.x + 400, smallView.center.y)
}
而且它工作得很好!,问题是,我在较小的视图中有一个文本视图,每次我开始编辑它时,它都会跳出主viewController原来的位置,我必须再次按下按钮才能将其放入。
如何解决这个问题
PS:当我开始编辑文本视图时,我尝试将其定位到中心,如下所示:
override func viewDidLayoutSubviews() {
smallView.center = CGPointMake(smallView.center.x - 400, smallView.center.y)
}
func textViewDidBeginEditing(textView: UITextView) {
smallView.center = CGPointMake(smallView.center.x + 400, smallView.center.y)
}
但它不起作用。并且该方法连接到textView PropertyLegate
PS2:我的viewController中还有imagePickerController。好的,因为您正在使用自动布局 自动布局的第一条规则是,你绝对不能直接接触视图的框架或中心
// don't do these
myView.frame = CGRectMake(0, 0, 100, 100);
// ever
myView.center = CGPointMake(50, 50);
您可以获得框架和中心,但无法设置框架或中心
为了使用自动布局移动对象,您需要更新约束
例如,如果我设置了一个名为myView的视图,并希望它在高度上增长和收缩,我会做如下操作
将superview的顶部约束设置为0。
将左约束设置为0处的superview。
将右约束设置为0处的superview。
例如,将高度约束设置为50,并将其保存在名为heightConstraint的特性中。
现在,为了使高度的变化具有动画效果,我将执行以下操作
self.heightConstraint.constant = 100;
[UIView animateWithDuration:1.0
animations:^ {
[self.view layoutIfNeeded];
}];
这将从我设置为100时的50处设置高度动画
这与使用“自动布局”的任何视图动画相同。例如,如果我保存了左约束,我可以更改它,它将增加或减少从superview左边缘到myView的间隙
上有几个关于自动布局的非常好的教程。我建议你看看
不管你做什么,我强烈建议你不要只禁用自动布局。如果您不知道如何使用自动布局,那么您将很快落后于iOS 8和新的设备尺寸。您使用的是自动布局吗?是的。它会影响行为吗?如果是,那我现在该怎么办?