我试图在UIPicker上做动画,当我的应用程序运行其隐藏时,按下按钮时,它会显示从按钮滑动,当我再次点击按钮时它会滑开。好吧,我的代码只做了一次。 它确实:
首次点击 - >显示选择器,isPickerHidden = NO
第二次点击 - >隐藏选择器,isPickerHidden = YES
第三次点击 - >什么都不做,但它返回isPickerHidden = NO viewDidLoad声明中的位置;
与第四次点击相同,但它不会做任何事情,只会返回正确的BOOL值。
isPickerHidden = YES;
[self.picker setHidden:isPickerHidden];
if(isPickerHidden == NO){
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.6];
CGRect frame = self.picker.frame;
[self.picker setFrame:CGRectOffset(frame, self.picker.frame.origin.x, self.picker.frame.origin.y)];
[UIView commitAnimations];
isPickerHidden = YES;
NSLog(@"hidden yes");
}else if(isPickerHidden == YES) {
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.6];
CGAffineTransform transfrom = CGAffineTransformMakeTranslation(0, -200);
self.picker.transform = transfrom;
[self.picker setHidden:NO];
[UIView commitAnimations];
NSLog(@"hidden no ");
isPickerHidden = NO;
}
我想知道我面临的问题是什么,我错过了什么。感谢名单
答案 0 :(得分:0)
为框架和选择器添加一些日志记录以查看正在发生的事情......
NSLog(@"picker: %.0f, %.0f, %.0f, %.0f", self.picker.frame.origin.x, self.picker.frame.origin.y, self.picker.frame.size.width, self.picker.frame.size.height);
答案 1 :(得分:0)
thanx NS兄弟的回复,但我现在做了一个不同的方法,而不是从我使用CGRectMake的原始点抵消点,我做了这个
if(isPickerHidden == NO) {
CGRect frame = self.picker.frame;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:0.6];
[self.picker setFrame:CGRectMake(frame.origin.x, frame.origin.y + 216, frame.size.width, frame.size.height)];
[UIView commitAnimations];
isPickerHidden = YES;
} else if (isPickerHidden == YES) {
CGRect frame = self.picker.frame;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:0.6];
[self.picker setFrame:CGRectMake(frame.origin.x, frame.origin.y - 216, frame.size.width, frame.size.height)];
[UIView commitAnimations];
isPickerHidden = NO;
}
滑动向下和向上滑动都以相同的方式做得很好。但现在问题是我想让UIPicker在app load上消失所以在viewDidLoad中我确实尝试使用[self.picker setHidden:YES];但是当我按下按钮时,我使用CGRect制作的帧不会出现,我也尝试了alpha仍然没有。
我也把if-else语句的主体放入setHidden中,并且知道它们的值。 我想知道我现在缺少什么。