새로운보기를로드 할 때마다 패널티가 발생하므로 스크롤보기 또는 다른 레이아웃을 사용하여 화면을 통합하려고 할 수 있습니다. 또한 불필요한 그래픽을로드하는 경우이를 제거 할 수 있습니다.
여러분은 또한 각보기를 하위보기로 추가 할 수 있습니다.이 경우 다른 것들 중에서 애니메이션 기간을 제어 할 수 있습니다. 이 코드는 당신을 위해 그렇게 할 것입니다. 다만 제가 작성한 것과 테스트하지 않은 것 (전환 스타일과 부울 매개 변수는 지금 당장 아무것도하지 않기 때문에 제거 할 수 있습니다).
UIViewControllerExtendedPresentModalViewController.h
#import <Foundation/Foundation.h>
typedef enum _ExtendedModalTransitionStyle
{
ExtendedModalTransitionStyleTopDown
} ExtendedModalTransitionStyle;
@interface UIViewController (ExtendedPresentModalViewController)
- (void)presentModalViewController: (UIViewController*)modalViewController
withTransitionStyle: (ExtendedModalTransitionStyle)style
animated: (BOOL)animated;
- (void)dismissModalViewController: (UIViewController*)modalViewController
withTransitionStyle: (ExtendedModalTransitionStyle)style
animated: (BOOL)animated;
@end
UIViewControllerExtendedPresentModalViewController.m 내 코드에서 성능 문제가 있다고 생각하지 않습니다
#import "UIViewControllerExtendedPresentModalViewController.h"
#import <QuartzCore/QuartzCore.h>
@implementation UIViewController (ExtendedPresentModalViewController)
- (void)presentModalViewController: (UIViewController*)modalViewController
withTransitionStyle: (ExtendedModalTransitionStyle)style
animated: (BOOL)animated
{
[modalViewController retain]; // we'll need this for a little while, hang on to it.
CATransition* transition = [CATransition animation];
[transition setDuration: 0.4];
[transition setTimingFunction:
[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear]];
[transition setType: kCATransitionMoveIn];
[transition setSubtype: kCATransitionFromBottom];
[[[self view] layer] addAnimation: transition
forKey: nil];
[[self view] addSubview: [modalViewController view]];
}
- (void)dismissModalViewController: (UIViewController*)modalViewController
withTransitionStyle: (ExtendedModalTransitionStyle)style
animated: (BOOL)animated
{
CATransition* transition = [CATransition animation];
[transition setDuration: 0.4];
[transition setTimingFunction:
[CAMediaTimingFunction functionWithName: kCAMediaTimingFunctionLinear]];//kCAMediaTimingFunctionEaseInEaseOut]];
[transition setType: kCATransitionReveal];
[transition setSubtype: kCATransitionFromTop];
[[[[modalViewController view] superview] layer] addAnimation: transition
forKey: nil];
[[modalViewController view] removeFromSuperview];
[modalViewController release]; // all done, we can let this go.
}
@end
감사합니다. –
당신이해야 할 관리의 양은 늘어날 것이지만, 당신에게 필요한 여분의 속도를 줄 수 있습니다. – jessecurry
이 특정 코드를 시도 할 시간이 없었지만 정상적인 동작에 의존하는 대신 모든 전환을 직접 수행해야합니다. –