Dan*_*noz 21 objective-c uiviewanimation uiviewanimationtransition ios
这是一个iPad项目,我有一个带有几个子视图的UIView,我试图使用[UIView transitionFromView:toView:duration:options:completion]为其中一个UIViews制作动画,但是当我运行此方法时,整个父视图被翻转!这是我正在使用的代码:
UIView *secondView = [[UIView alloc] initWithFrame:CGRectMake(200, 200, 300, 300)];
[newView setBackgroundColor:[UIColor redColor]];
[UIView transitionFromView:self.firstView.view toView:secondView duration:1.0 options:UIViewAnimationOptionTransitionFlipFromLeft completion:nil];
Run Code Online (Sandbox Code Playgroud)
有关如何在不动画整个父视图的情况下在这些视图之间切换的任何想法?谢谢!
Flo*_*497 70
此代码可以帮助您:
将您要翻转的两个视图放在一个具有相同大小的未命名视图中,并将其链接IBOutlet UIView *newView,*oldView;到视图并将新视图放在顶部
bool a = NO;
@implementation ViewController
- (IBAction)flip:(id)sender
{
if (a == NO) {
[UIView transitionFromView:oldView toView:newView
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
completion:NULL];
a = YES; // a = !a;
}
else {
[UIView transitionFromView:newView toView:oldView
duration:1.0
options:UIViewAnimationOptionTransitionFlipFromLeft
completion:NULL];
a = NO; // a = !a;
}
}
Run Code Online (Sandbox Code Playgroud)
小智 37
我也遇到了问题.我使用了Floris编写的代码,但是虽然它适用于第一个"翻转",但下一个翻转开始变得奇怪,前端UI视图上的按钮和标签丢失了位置.
我把下面的代码放到位,它工作正常.
有几点需要注意:

(在我的.h)
@property BOOL displayingFront;
Run Code Online (Sandbox Code Playgroud)
在我的.m
@synthesize displayingFront;
Run Code Online (Sandbox Code Playgroud)
在我的viewDidLoad方法中
self.displayingFront = YES;
Run Code Online (Sandbox Code Playgroud)
这是.m中的代码,如果正面和背面的UIViews,我已经装配了两个按钮......
- (IBAction)flip:(id)sender
{
[UIView transitionWithView:self.panelView
duration:1.0
options:(displayingFront ? UIViewAnimationOptionTransitionFlipFromRight :
UIViewAnimationOptionTransitionFlipFromLeft)
animations: ^{
if(displayingFront)
{
self.frontView.hidden = true;
self.backView.hidden = false;
}
else
{
self.frontView.hidden = false;
self.backView.hidden = true;
}
}
completion:^(BOOL finished) {
if (finished) {
displayingFront = !displayingFront;
}
}];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31827 次 |
| 最近记录: |