我需要先从屏幕隐藏UIView
,然后向上滑动。有点像UIActionSheetView
动画。在IB中,我已经设置了一个UIView
棍子到superview的底部边框。在代码中,当应用程序启动时,我已将其框架更改为远离屏幕隐藏。当它开始时,UIView
向上滑动。这是我的代码。这个 optionsSheetView 是我所指的'UIView'。
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
// Hide the UIView from the screen initially
self.optionsSheetView.frame = CGRectMake(0, self.optionsSheetView.frame.origin.y + self.optionsSheetView.frame.size.height, self.optionsSheetView.frame.size.width, self.optionsSheetView.frame.size.height);
// Sliding up animation
[UIView animateWithDuration:0.9 delay:0.5 options:UIViewAnimationOptionCurveEaseIn animations:^{
self.optionsSheetView.frame = CGRectMake(0, 374, self.optionsSheetView.frame.size.width, self.optionsSheetView.frame.size.height);
} completion:^(BOOL finished) {
}];
}
现在这是我的问题。这很好用。但我不喜欢在我的代码中保留硬编码值。与optionsSheetView的y
坐标一样,为374。如果我把self.optionsSheetView.frame.origin.y
放在那里,那就不行了。这基本上是一回事。当我用它的实际值374替换它时,它工作正常。
为什么会这样?如果不使用魔术数字,我有什么方法可以解决这个问题吗?
谢谢。
答案 0 :(得分:1)
请尝试以下操作:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
CGFloat oldY = self.optionsSheetView.frame.origin.y;
// Hide the UIView from the screen initially
self.optionsSheetView.frame = CGRectMake(0, self.optionsSheetView.frame.origin.y + self.optionsSheetView.frame.size.height, self.optionsSheetView.frame.size.width, self.optionsSheetView.frame.size.height);
// Sliding up animation
[UIView animateWithDuration:0.9 delay:0.5 options:UIViewAnimationOptionCurveEaseIn animations:^{
self.optionsSheetView.frame = CGRectMake(0, oldY, self.optionsSheetView.frame.size.width, self.optionsSheetView.frame.size.height);
} completion:^(BOOL finished) {
}];
}