문제

사용자가 탐색 컨트롤러의 다른보기에 약 6 가지 정보를 입력하는 데이터 입력 응용 프로그램이 있습니다. 이것은 제대로 작동하지만 사용자가 응용 프로그램에 익숙해지면 다음 화면이 나타나는 데 걸리는 시간이 사용자가 속도가 느려집니다.

나는 애니메이션없이 응용 프로그램을 시도했지만 옳지 않다고 느끼지 않습니다. 애니메이션이 더 빨리 발생할 수있는 방법이 있습니까? 주로 내비게이션 컨트롤러, 테이블 뷰 및 피커보기를 사용하고 있습니다.

도움이 되었습니까?

해결책

새로운보기를로드 할 때마다 페널티가있을 것입니다. 스크롤보기 또는 다른 레이아웃을 사용하여 화면을 통합하려고 시도 할 수 있습니다. 또한 불필요한 그래픽을로드하는 경우 제거 할 수 있습니다.

또한 각보기를 하위 뷰로 추가 할 수 있으며,이 경우 애니메이션 지속 시간을 제어 할 수 있습니다. 이 코드는 내가 방금 작성하고 테스트하지 않았기 때문에주의를 기울일 것입니다 (전환 스타일과 부울 매개 변수는 지금 아무것도하지 않으므로 제거 할 수 있습니다).

uiviewControllEerExtendedPresentModalViewController.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

uiviewControllEerExtendedPresentModalViewController.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

다른 팁

테이블 뷰에서 셀을 재사용하고 있습니까? 즉, IF (Cell == NIL) 케이스 내부의 셀 설정을 모두 수행하고 (재사용 및 새로 생성 된) 공동 사례에 데이터 만 적용하십시오.

투명성이 셀에서 가질 수있는 성능 히트를 알고 있어야합니다. 종종 당신은 일을 투명하게 만들어야하는 것처럼 보이지만 UitableViewCell이 문제를 알고 있기 때문에 그렇지 않을 수도 있습니다. 일부 객체에서 투명성을 끄는 것은 잘못된 것처럼 보일 수 있지만 실제로 작동하는지 확인할 가치가 있습니다. 셀을 스크롤하는 데 드는 대부분의 비용은 셀이 초기에 생성되지 않고 셀이 움직일 때 합성물입니다.

도움이 될 수있는 또 다른 것은 셀에 모든보기를 추가하기보다는 미리 셀에 적용한다는 견해를 합성하는 것입니다.

실제로 스크롤 셀에서 뷰를 애니메이션하는 경우이를 다시 생각하거나 단순화를 사용하여 장치에 대한 과세를 조금 덜 세금으로 만들어야 할 수도 있습니다.

입양을 고려할 수도 있습니다 매트 갤러거 (Matt Gallagher)의 세포 처리 전략 - 그것은 당신의 cellforsionatindexpath가 길고 불쾌한 IFS 세트로 바뀌는 것을 멈추지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top