2009-11-18 32 views
5

Tôi làm cách nào để triển khai hoạt ảnh mà chúng tôi thấy trong màn hình trình bao của ứng dụng iPhone Music? khi bạn nhấp vào một chế độ xem nhỏ, nó sẽ lật và chia tỷ lệ lên một chế độ xem khác? tôi có thể làm cái này như thế nào? Tôi có thể sử dụng hoạt ảnh lõi để lật và mở rộng chế độ xem, nhưng làm cách nào để chuyển đổi sang chế độ xem khác? nhờcách triển khai hoạt ảnh chuyển tiếp chế độ xem trên iPhone với cả lật và mở rộng?

+0

Xem câu trả lời này: http://stackoverflow.com/questions/5511514/custom-transition-between-two-uiviews/8931492#8931492 – aoakenfo

+0

Tôi đã trả lời câu hỏi tương tự ở đây (có mã): http: // stackoverflow. com/questions/19171918/how-can-i-flip-và-phóng to-a-uiview-it-at-the-cùng-thời gian-như-ios-7-ipad-app-stor –

Trả lời

14

Bạn cần một UIView như container cho hai UIView s (FSB/mặt sau) và sau đó loại bỏ/thêm các từ/đến container như subviews trong khi làm các hình ảnh động ở giữa:

UIView *flipContainer; 
UIView *frontSide; 
UIView *backSide; 
    //... 
-(void)turnUp 
{ 
    [backSide removeFromSuperview]; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:flipContainer cache:YES]; 
    [UIView setAnimationDuration:1.0]; 
    CGAffineTransform transform = CGAffineTransformMakeScale(1.2, 1.2); 
    flipContainer.transform = transform; 
    [UIView commitAnimations]; 
    [flipContainer addSubview:frontSide]; 
} 
-(void)turnDown 
{ 
    [frontSide removeFromSuperview]; 
    [UIView beginAnimations:nil context:NULL]; 
    [UIView setAnimationDuration:1.0]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:flipContainer cache:YES]; 
    [UIView setAnimationDuration:1.0]; 
    CGAffineTransform transform = CGAffineTransformMakeScale(1, 1); 
    flipContainer.transform = transform; 
    [UIView commitAnimations]; 
    [flipContainer addSubview:backSide]; 
} 
+0

hoạt động như một sự quyến rũ. cảm ơn! –

+0

Ha! Bạn đã gọi '+ [UIView setAnimationDuration:]' hai lần! –

0

tôi m cố gắng mã chính xác bạn đang làm - Tôi nhận được một hiệu ứng zoom nhưng không có lần lượt. Sự khác biệt duy nhất là ngay trước khi mã turnup tôi thêm flipContainer (với hiển thị trở lại) để sau đó nó có thể được lật qua.

// construct animation container 
self.flipContainer = [[FlipContainer alloc] init]; 
[self.flipContainer.view setFrame:CGRectMake(clickedSquareX, clickedSquareY, 200, 200)]; 
[self.flipContainer.view addSubview:self.backside.view]; 
// add animation container 
[self.myParentView.view addSubview:self.flipContainer.view]; 
// PROCEED to your turnUp code 

Lý do tôi đang làm điều này là tôi có một loạt các hình ảnh trong một UIScrollView ngang và như vậy để 'mô phỏng' một hình ảnh 200x200 lật qua và phóng to để hiển thị chi tiết tôi thêm flipContainer tôi với mặt sau cho thấy sự hình ảnh chính xác trên vị trí chính xác của hình ảnh được nhấn. Nó nên làm việc phải không? Một chút bối rối với tôi là dòng đầu tiên của mã turnup bạn thực hiện:

[backSide removeFromSuperview]; 

..để loại bỏ chế độ xem mà tôi vừa thêm vào.

Tôi không chắc liệu đây có phải là điểm thích hợp để đưa câu hỏi này vào - xin lỗi nếu không!

Các vấn đề liên quan