所有
我正在拼命地编写一种方法,该方法可以动画在一种“向上滑动”效果中添加子视图,其中视图从特定点滑动到屏幕上。我可以让UIImageView工作,但我有一点时间将它应用到UIPickerView。会发生什么,UIPickerView仅移动并动画大约1/4的高度。 UIImageView真正以高度0开始并向上滑动到屏幕上。
到目前为止,这是我的代码:
+ (void) slideupView:(UIView*) view duration:(CGFloat) duration completion:(void (^)(BOOL
finished)) completion {
CGRect endBounds = view.bounds;
CGRect startBounds = endBounds;
startBounds.size.height = 0;
view.bounds = startBounds;
view.contentMode = UIViewContentModeTop;
view.clipsToBounds = YES;
view.layer.anchorPoint = CGPointMake(0.5, 1.0);
CGPoint pos = view.layer.position;
pos.y += (endBounds.size.height / 2);
view.layer.position = pos;
[UIView animateWithDuration:duration delay:0.0
options:UIViewAnimationOptionAllowUserInteraction
animations:^{
view.bounds = endBounds;
}
completion:completion];
}
从我读过的内容来看,听起来鼓励的方法是使用边界矩形而不是框架,因为如果修改了变换,框架方法将无效。
我还读过一个人无法改变UIPickerView的高度,所以我想知道这是否是造成这个问题的原因。不可否认,我没有在任何其他UIView子类上尝试过它。
有什么想法?有更好的方法吗?我只是想在屏幕上设置动画,类似于呈现模态视图控制器的视图,除了我不希望它覆盖整个屏幕。我只想要一个上滑效果,就像键盘出现在屏幕上一样。
谢谢! 贾斯汀
答案 0 :(得分:2)
如果您只是想像键盘一样向上滑动视图,那么您可以通过动画更改视图的y坐标来实现。
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0f,460.0f,320.0f,260.0f)];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionNone forView:[self view] cache:YES];
[view setFrame:CGRectMake(0.0f,200.0f,320.0f,260.0f)];
[UIView commitAnimations];
答案 1 :(得分:0)
“Bounds”是指视图本身的内部坐标系,而“frame”和“center”是指视图在其父坐标系中的位置。因此,要将视图滑动到屏幕上,您需要为框架或中心设置动画。