我已經在這裏找到一個解決方案How to flip an individual UIView (without flipping the parent view)翻轉2子視圖不工作時間可持續
,但似乎這並沒有爲我工作。在Interface Builder中,我用uiview創建了所有的視圖,並在這兩個uiviews中創建了相同的大小,第一個視圖顯示在上面,我爲這3個視圖創建了三個插座。
在viewDidLoad中:
[self.view addSubview:self.contentView]
[self.contentView addSubview:firstView]
[self.contentView addSubview:secondView]
我有一個uigesture。當用戶點擊屏幕時,IBAction爲執行翻轉:
-(IBAction)flip:(id *)sender
{
if(faceUp){
// execute transition from firstview to second
}else{
//execute transition from secondview to first
}
faceUp = !faceUp;
}
這項工作完美我第一次點擊和翻轉從第一碰巧第二,那麼,如果我再次點擊翻頁開始,然後結束沒有任何東西,視圖消失並保持容器視圖不顯示,因爲它的顏色設置爲清除。 我該如何解決這個問題?
這與點擊手勢方法的控制器和三個出口:
#import "ContactViewController.h"
#import "InfoContactView.h"
#import "ImageLogoView.h"
@interface ContactViewController()
@property (strong, nonatomic) IBOutlet InfoContactView *contactInfoView;
@property (strong, nonatomic) IBOutlet ImageLogoView *imageLogoView;
@property (nonatomic) BOOL faceUp;
@property (strong, nonatomic) IBOutlet UIView *parentView;
@end
@implementation ContactViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.parentView.backgroundColor =[UIColor clearColor];
[self.view addSubview:self.parentView];
[self.parentView addSubview:self.contactInfoView];
[self.parentView addSubview:self.imageLogoView];
self.faceUp = NO;
}
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
-(void)setFaceUp:(BOOL)faceUp
{
_faceUp = faceUp;
}
-(void)setParentView:(UIView *)parentView
{
_parentView =parentView;
}
-(void)setContactInfoView:(InfoContactView *)contactInfoView
{
_contactInfoView = contactInfoView;
}
-(void)setImageLogoView:(ImageLogoView *)imageLogoView
{
_imageLogoView = imageLogoView;
}
- (IBAction)showInfo:(UITapGestureRecognizer *)sender {
if (self.faceUp == NO) {
[UIView transitionFromView:self.imageLogoView toView:self.contactInfoView
duration:1.5
options:UIViewAnimationOptionTransitionFlipFromLeft
completion:NULL];
NSLog(@"Pass from logo to info : imageLogoView = %@",self.imageLogoView.description);
NSLog(@"dettagli = %@",self.contactInfoView);
}
else if(self.faceUp == YES){
[UIView transitionFromView:self.contactInfoView toView:self.imageLogoView
duration:1.5
options:UIViewAnimationOptionTransitionFlipFromRight
completion:NULL];
NSLog(@"Pass from info to logo: imageLogoView = %@",self.imageLogoView.description);
NSLog(@"dettagli = %@",self.contactInfoView);
}
self.faceUp = !self.faceUp;
}
@end
你可以在你的'-flip'方法中發佈* if * else語句中的代碼嗎?對我來說,它看起來像'firstView'的引用在你的代碼中被設置爲'nil'。 – Mischa
@Mischa我編輯了最初的帖子,用 – gcc