IOS 개발 사용자 정의 슬라이더 미끄럼 불민 및 카드 문제 조사 및 해결 방안

iOS 의 실제 개발 과정 에서 사용자 정의 슬라이더 가 민감 하지 않 거나 멈 추 는 문제 가 발생 하 는데 원인 은 무엇 일 까?1. 구성 요소 자체 문제
1) 먼저 컨트롤 자체 의 문제 인지 확인 하고 value Changed 시 실 행 된 코드 를 주석 하여 슬라이더 의 미끄럼 이 민감 한 지 관찰 합 니 다.2) 컨트롤 자체 의 문제, 사용자 정의 슬라이더 는 일반적으로 세 가지 방식 이 있 습 니 다. a. UISlider 를 바탕 으로 사용자 정의 b, UIControl 을 계승 하여 슬라이더 c 를 다시 정의 하고 제스처 의 드래그 를 통 해 슬라이더 b, c 방안 을 정의 합 니 다. 컨트롤 의 민감 도 는 점 접촉 구역 의 범위 에 달 려 있 습 니 다. 일반적으로 a 방안 을 권장 합 니 다. 시스템 구성 요소 의 패 키 징 이 비교적 유창 합 니 다.
2. 카드 문제, 미끄럼 과정 에서 시간 소모 작업 을 수행
일반적으로 실행 과정 에서 시간 이 걸 리 는 조작 이 있 으 므 로 슬라이더 방식 으로 조작 하 는 것 을 권장 하지 않 는 다.정확 한 해결 방안 은 수요 교체 (설득 PM), button 전환 등 으로 바 꾸 거나 알고리즘 을 최적화 하여 시간 소모 작업 을 제거 해 야 합 니 다.
어떻게 이 결점 을 최적화 합 니까?1. 방안 선택: 처리 과정 에서 빠 지지 않 는 시간 소모 작업 이 있 을 때 UI 에서 슬라이더 의 조절 방식 을 사용 하지 않도록 한다.비동기 처 리 를 제창 하지 않 으 면 슬라이더 의 변화 와 실제 처리 가 일치 하지 않 을 것 이다.2. 프레임 을 잃 어 버 리 는 처 리 는 미끄럼 이 비교적 빠 를 때 일부 리 셋 을 처리 하지 않 는 것 이다.아래 코드 블록
    NSLog(@"templateSlider1111 : %.3f", value);
    CGFloat interval = 0.01;
    if ([self isFastClickAction:interval])
    {
        return;
    }
    NSLog(@"templateSlider2222 : %.3f", value);
- (BOOL) isFastClickAction:(NSTimeInterval)interval{
    if (_lastClickDate == nil) {
        _lastClickDate = [NSDate date];
        return NO;
    }
    NSDate *currentDate = (NSDate *)[NSDate date];
    NSTimeInterval intervalFromLast = [currentDate timeIntervalSinceDate:_lastClickDate];
    NSLog(@"click intervalFromLast:%f,interval:%f",intervalFromLast,interval);
    if ( intervalFromLast < 0 ) {
        return NO;
    }
    if(intervalFromLast < interval){
        NSLog(@"click too fast now");
        return YES;
    }
    _lastClickDate = currentDate;
    return NO;
}

마지막 리 셋 이 이 루어 지 는 것 을 방지 하기 위해 서 는 마지막 으로 '프레임 보 정 작업' 을 해 야 합 니 다. UISlider 범위 가 크게 변동 되 었 을 때 마지막 으로 UIControlEventTouchUpInside 이 벤트 를 감청 함으로써 '프레임 보 정 작업' 을 합 니 다.(UISlider 가 작은 범위 에서 변동 할 때 'UIControlEventTouchUpInside' 는 실행 되 지 않 을 수 있 습 니 다. 물론 이때 슬라이더 의 속도 가 느 리 기 때문에 프레임 을 보충 할 필요 가 없습니다)
물론 프레임 을 잃 어 버 리 는 처리 방식 은 시간 이 걸 리 는 작업 에 만 적 용 됩 니 다. 다음은 UISlider 의 빠 른 미끄럼 작업 입 니 다. 서로 다른 시간 간격 으로 프레임 을 잃 어 버 리 는 상황 (데 이 터 는 본인 의 손 속도 에서 기원 합 니 다): 테스트 환경: a, iPhone 6 b, 개인 일반 빠 른 미끄럼 c, 슬라이더 길이 320 다음은 선택 한 0.01s, 0.05s, 0.1s 의 프레임 을 잃 어 버 리 는 상황 입 니 다.기타 테스트 결 과 는 여기 서 생략 합 니 다.데이터 테스트 를 통 해 다음 과 같은 결론 을 얻 을 수 있다. 1. 시간 을 소모 하 는 작업 의 집행 시간 은 설 정 된 프레임 을 잃 는 간격 보다 높 고 프레임 을 잃 는 처 리 는 작용 하지 않 는 다.2. 빠 른 미끄럼 시 매번 슬라이더 value Changed 의 처리 간격 은 약 0.005s ~ 0.02s 이 고 프레임 변 경 량 은 약 2% 입 니 다.3. 프레임 을 잃 어 버 리 는 처리 상황: 0.01s 의 프레임 을 잃 어 버 리 는 간격, 속도 가 비교적 빠 를 때 가끔 한 프레임 을 잃 어 버 리 고 프레임 의 경 계 는 약 5% 이다.0.05 s 의 프레임 을 잃 어 버 리 는 간격 은 주기 당 3 프레임 을 잃 어 버 리 고 프레임 의 경계 가 20% ~ 30% 이다.0.1s 의 프레임 을 잃 어 버 리 는 간격 은 주기 당 4 ~ 7 프레임 을 잃 어 버 리 고 프레임 의 범위 가 40 ~ 60% 가 됩 니 다.비교적 높 은 프레임 의 변화 경 계 는 우리 가 페이지 를 갱신 하 는 데 점점 움 직 일 수 있 기 때문에 페이지 를 갱신 하 는 그 라 데 이 션 효 과 를 확보 하기 위해 일반적인 프레임 처 리 는 프레임 을 잃 는 간격 이 0.05 s 이내 가 되도록 해 야 한다.
iPhone 6 간격 0.01s
2018-03-16 23:24:30.656984+0800 VivaLite[3234:625532] templateSlider2222 : 0.716
2018-03-16 23:24:30.671289+0800 VivaLite[3234:625532] templateSlider1111 : 0.633
2018-03-16 23:24:30.671405+0800 VivaLite[3234:625532] templateSlider2222 : 0.633
2018-03-16 23:24:30.693179+0800 VivaLite[3234:625532] templateSlider1111 : 0.547
2018-03-16 23:24:30.693286+0800 VivaLite[3234:625532] templateSlider2222 : 0.547
2018-03-16 23:24:30.704099+0800 VivaLite[3234:625532] templateSlider1111 : 0.465
2018-03-16 23:24:30.704215+0800 VivaLite[3234:625532] templateSlider2222 : 0.465
2018-03-16 23:24:30.726855+0800 VivaLite[3234:625532] templateSlider1111 : 0.400
2018-03-16 23:24:30.727765+0800 VivaLite[3234:625532] templateSlider2222 : 0.400
2018-03-16 23:24:30.737945+0800 VivaLite[3234:625532] templateSlider1111 : 0.341
2018-03-16 23:24:30.738882+0800 VivaLite[3234:625532] templateSlider2222 : 0.341
2018-03-16 23:24:30.762311+0800 VivaLite[3234:625532] templateSlider1111 : 0.301
2018-03-16 23:24:30.762470+0800 VivaLite[3234:625532] templateSlider2222 : 0.301
2018-03-16 23:24:30.771372+0800 VivaLite[3234:625532] templateSlider1111 : 0.272
2018-03-16 23:24:30.771598+0800 VivaLite[3234:625532] click too fast now
2018-03-16 23:24:30.822295+0800 VivaLite[3234:625532] templateSlider1111 : 0.252
2018-03-16 23:24:30.822398+0800 VivaLite[3234:625532] templateSlider2222 : 0.252
2018-03-16 23:24:30.842367+0800 VivaLite[3234:625532] templateSlider1111 : 0.259
2018-03-16 23:24:30.842496+0800 VivaLite[3234:625532] templateSlider2222 : 0.259
2018-03-16 23:24:30.894287+0800 VivaLite[3234:625532] templateSlider1111 : 0.402
2018-03-16 23:24:30.904978+0800 VivaLite[3234:625532] templateSlider2222 : 0.402
2018-03-16 23:24:30.907098+0800 VivaLite[3234:625532] templateSlider1111 : 0.468
2018-03-16 23:24:30.907244+0800 VivaLite[3234:625532] click too fast now
2018-03-16 23:24:30.927183+0800 VivaLite[3234:625532] templateSlider1111 : 0.548
2018-03-16 23:24:30.927888+0800 VivaLite[3234:625532] templateSlider2222 : 0.548
2018-03-16 23:24:30.937072+0800 VivaLite[3234:625532] templateSlider1111 : 0.621
2018-03-16 23:24:30.937260+0800 VivaLite[3234:625532] click too fast now
2018-03-16 23:24:30.954610+0800 VivaLite[3234:625532] templateSlider1111 : 0.686
2018-03-16 23:24:30.954739+0800 VivaLite[3234:625532] templateSlider2222 : 0.686
2018-03-16 23:24:30.974871+0800 VivaLite[3234:625532] templateSlider1111 : 0.746
2018-03-16 23:24:30.976635+0800 VivaLite[3234:625532] templateSlider2222 : 0.746
2018-03-16 23:24:30.991061+0800 VivaLite[3234:625532] templateSlider1111 : 0.794
2018-03-16 23:24:30.991208+0800 VivaLite[3234:625532] templateSlider2222 : 0.794
2018-03-16 23:24:31.014046+0800 VivaLite[3234:625532] templateSlider1111 : 0.836
2018-03-16 23:24:31.014511+0800 VivaLite[3234:625532] templateSlider2222 : 0.836
2018-03-16 23:24:31.029180+0800 VivaLite[3234:625532] templateSlider1111 : 0.869
2018-03-16 23:24:31.029293+0800 VivaLite[3234:625532] templateSlider2222 : 0.869
2018-03-16 23:24:31.037419+0800 VivaLite[3234:625532] templateSlider1111 : 0.895
2018-03-16 23:24:31.037589+0800 VivaLite[3234:625532] click too fast now
2018-03-16 23:24:31.056255+0800 VivaLite[3234:625532] templateSlider1111 : 0.917
2018-03-16 23:24:31.056371+0800 VivaLite[3234:625532] templateSlider2222 : 0.917
2018-03-16 23:24:31.071071+0800 VivaLite[3234:625532] templateSlider1111 : 0.927
2018-03-16 23:24:31.071170+0800 VivaLite[3234:625532] templateSlider2222 : 0.927
2018-03-16 23:24:31.093576+0800 VivaLite[3234:625532] templateSlider1111 : 0.934
2018-03-16 23:24:31.093717+0800 VivaLite[3234:625532] templateSlider2222 : 0.934
2018-03-16 23:24:31.136368+0800 VivaLite[3234:625532] templateSlider1111 : 0.919
2018-03-16 23:24:31.136477+0800 VivaLite[3234:625532] templateSlider2222 : 0.919
2018-03-16 23:24:31.158405+0800 VivaLite[3234:625532] templateSlider1111 : 0.889
2018-03-16 23:24:31.158589+0800 VivaLite[3234:625532] templateSlider2222 : 0.889
2018-03-16 23:24:31.172826+0800 VivaLite[3234:625532] templateSlider1111 : 0.862
2018-03-16 23:24:31.173014+0800 VivaLite[3234:625532] templateSlider2222 : 0.862
2018-03-16 23:24:31.204725+0800 VivaLite[3234:625532] templateSlider1111 : 0.839
2018-03-16 23:24:31.204876+0800 VivaLite[3234:625532] templateSlider2222 : 0.839
2018-03-16 23:24:31.215004+0800 VivaLite[3234:625532] templateSlider1111 : 0.832
2018-03-16 23:24:31.215506+0800 VivaLite[3234:625532] templateSlider2222 : 0.832

아이 폰 6, 간격 0.05
2018-03-19 21:00:02.957876+0800 VivaLite[7297:1695311] templateSlider2222 : 0.189
2018-03-19 21:00:02.975809+0800 VivaLite[7297:1695311] templateSlider1111 : 0.209
2018-03-19 21:00:02.975954+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:02.990463+0800 VivaLite[7297:1695311] templateSlider1111 : 0.228
2018-03-19 21:00:02.990665+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.006789+0800 VivaLite[7297:1695311] templateSlider1111 : 0.248
2018-03-19 21:00:03.006998+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.023588+0800 VivaLite[7297:1695311] templateSlider1111 : 0.269
2018-03-19 21:00:03.023804+0800 VivaLite[7297:1695311] templateSlider2222 : 0.269
2018-03-19 21:00:03.037670+0800 VivaLite[7297:1695311] templateSlider1111 : 0.292
2018-03-19 21:00:03.037833+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.055167+0800 VivaLite[7297:1695311] templateSlider1111 : 0.314
2018-03-19 21:00:03.055330+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.073753+0800 VivaLite[7297:1695311] templateSlider1111 : 0.342
2018-03-19 21:00:03.073972+0800 VivaLite[7297:1695311] templateSlider2222 : 0.342
2018-03-19 21:00:03.090166+0800 VivaLite[7297:1695311] templateSlider1111 : 0.370
2018-03-19 21:00:03.090385+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.104700+0800 VivaLite[7297:1695311] templateSlider1111 : 0.399
2018-03-19 21:00:03.105188+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.121126+0800 VivaLite[7297:1695311] templateSlider1111 : 0.427
2018-03-19 21:00:03.121283+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.139574+0800 VivaLite[7297:1695311] templateSlider1111 : 0.452
2018-03-19 21:00:03.139784+0800 VivaLite[7297:1695311] templateSlider2222 : 0.452
2018-03-19 21:00:03.157042+0800 VivaLite[7297:1695311] templateSlider1111 : 0.473
2018-03-19 21:00:03.157255+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.173506+0800 VivaLite[7297:1695311] templateSlider1111 : 0.495
2018-03-19 21:00:03.173713+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.190615+0800 VivaLite[7297:1695311] templateSlider1111 : 0.517
2018-03-19 21:00:03.190844+0800 VivaLite[7297:1695311] templateSlider2222 : 0.517
2018-03-19 21:00:03.204320+0800 VivaLite[7297:1695311] templateSlider1111 : 0.548
2018-03-19 21:00:03.204850+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.223696+0800 VivaLite[7297:1695311] templateSlider1111 : 0.578
2018-03-19 21:00:03.223902+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.239675+0800 VivaLite[7297:1695311] templateSlider1111 : 0.611
2018-03-19 21:00:03.240310+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.255625+0800 VivaLite[7297:1695311] templateSlider1111 : 0.641
2018-03-19 21:00:03.255774+0800 VivaLite[7297:1695311] templateSlider2222 : 0.641
2018-03-19 21:00:03.270745+0800 VivaLite[7297:1695311] templateSlider1111 : 0.669
2018-03-19 21:00:03.270859+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.288238+0800 VivaLite[7297:1695311] templateSlider1111 : 0.691
2018-03-19 21:00:03.288352+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.304407+0800 VivaLite[7297:1695311] templateSlider1111 : 0.714
2018-03-19 21:00:03.304618+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.320181+0800 VivaLite[7297:1695311] templateSlider1111 : 0.736
2018-03-19 21:00:03.320342+0800 VivaLite[7297:1695311] templateSlider2222 : 0.736
2018-03-19 21:00:03.337332+0800 VivaLite[7297:1695311] templateSlider1111 : 0.752
2018-03-19 21:00:03.337417+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.353651+0800 VivaLite[7297:1695311] templateSlider1111 : 0.766
2018-03-19 21:00:03.353742+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.371080+0800 VivaLite[7297:1695311] templateSlider1111 : 0.772
2018-03-19 21:00:03.371196+0800 VivaLite[7297:1695311] templateSlider2222 : 0.772
2018-03-19 21:00:03.390947+0800 VivaLite[7297:1695311] templateSlider1111 : 0.777
2018-03-19 21:00:03.391106+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.406980+0800 VivaLite[7297:1695311] templateSlider1111 : 0.779
2018-03-19 21:00:03.407097+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.420120+0800 VivaLite[7297:1695311] templateSlider1111 : 0.781
2018-03-19 21:00:03.420216+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.453253+0800 VivaLite[7297:1695311] templateSlider1111 : 0.781
2018-03-19 21:00:03.453353+0800 VivaLite[7297:1695311] templateSlider2222 : 0.781
2018-03-19 21:00:03.470227+0800 VivaLite[7297:1695311] templateSlider1111 : 0.781
2018-03-19 21:00:03.470324+0800 VivaLite[7297:1695311] click too fast now
2018-03-19 21:00:03.487173+0800 VivaLite[7297:1695311] templateSlider1111 : 0.772

iPhone 6, 0.1s 간격
2018-03-19 21:07:43.322574+0800 VivaLite[7318:1698461] templateSlider1111 : 0.130
2018-03-19 21:07:43.322943+0800 VivaLite[7318:1698461] templateSlider2222 : 0.130
2018-03-19 21:07:43.339668+0800 VivaLite[7318:1698461] templateSlider1111 : 0.128
2018-03-19 21:07:43.339841+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.406331+0800 VivaLite[7318:1698461] templateSlider1111 : 0.128
2018-03-19 21:07:43.406535+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.424621+0800 VivaLite[7318:1698461] templateSlider1111 : 0.131
2018-03-19 21:07:43.425226+0800 VivaLite[7318:1698461] templateSlider2222 : 0.131
2018-03-19 21:07:43.443287+0800 VivaLite[7318:1698461] templateSlider1111 : 0.146
2018-03-19 21:07:43.443509+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.458177+0800 VivaLite[7318:1698461] templateSlider1111 : 0.169
2018-03-19 21:07:43.458390+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.474857+0800 VivaLite[7318:1698461] templateSlider1111 : 0.199
2018-03-19 21:07:43.475393+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.493027+0800 VivaLite[7318:1698461] templateSlider1111 : 0.238
2018-03-19 21:07:43.493229+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.507813+0800 VivaLite[7318:1698461] templateSlider1111 : 0.284
2018-03-19 21:07:43.508290+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.525029+0800 VivaLite[7318:1698461] templateSlider1111 : 0.339
2018-03-19 21:07:43.525246+0800 VivaLite[7318:1698461] templateSlider2222 : 0.339
2018-03-19 21:07:43.542272+0800 VivaLite[7318:1698461] templateSlider1111 : 0.395
2018-03-19 21:07:43.542493+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.559304+0800 VivaLite[7318:1698461] templateSlider1111 : 0.453
2018-03-19 21:07:43.559520+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.573798+0800 VivaLite[7318:1698461] templateSlider1111 : 0.512
2018-03-19 21:07:43.574006+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.591655+0800 VivaLite[7318:1698461] templateSlider1111 : 0.570
2018-03-19 21:07:43.591867+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.609444+0800 VivaLite[7318:1698461] templateSlider1111 : 0.628
2018-03-19 21:07:43.609665+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.622374+0800 VivaLite[7318:1698461] templateSlider1111 : 0.681
2018-03-19 21:07:43.622571+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.639283+0800 VivaLite[7318:1698461] templateSlider1111 : 0.724
2018-03-19 21:07:43.639452+0800 VivaLite[7318:1698461] templateSlider2222 : 0.724
2018-03-19 21:07:43.658281+0800 VivaLite[7318:1698461] templateSlider1111 : 0.766
2018-03-19 21:07:43.658491+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.673879+0800 VivaLite[7318:1698461] templateSlider1111 : 0.801
2018-03-19 21:07:43.674044+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.689453+0800 VivaLite[7318:1698461] templateSlider1111 : 0.834
2018-03-19 21:07:43.689671+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.706020+0800 VivaLite[7318:1698461] templateSlider1111 : 0.864
2018-03-19 21:07:43.706178+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.723893+0800 VivaLite[7318:1698461] templateSlider1111 : 0.885
2018-03-19 21:07:43.724102+0800 VivaLite[7318:1698461] click too fast now
2018-03-19 21:07:43.742062+0800 VivaLite[7318:1698461] templateSlider1111 : 0.905
2018-03-19 21:07:43.742286+0800 VivaLite[7318:1698461] templateSlider2222 : 0.905

좋은 웹페이지 즐겨찾기