Flutter iPhone 13 Pro 120Hz 스크롤링 버벅일 때 임시조치 방안

도원·2022년 1월 28일
0

Flutter

목록 보기
1/3

Flutter를 잘 사용하고 있는데, 아이폰 13 Pro 모델에서 사용을 하다보면 스크롤링이나 화면 전환이 부드럽지 않은 현상을 발견.

해당 조치 사항은 임시 조치 방안입니다!
Flutter 팀에서 해당 이슈 인지하고 패치 적용 할 것이라고 하네요.

문제점

  • iPhone 13 Pro 이상의 120Hz 가변주사율 환경에서 스크롤링이나 화면 전환시 버벅거리는 현상이 보임.
  • Android는 정상 작동하는 것으로 보이며, iOS에서만 해당 증상을 확인함.

해결방법

  1. info.plist 에 해당 문구를 추가한다.
<key>CADisableMinimumFrameDurationOnPhone</key><true/>

  1. AppDelegate.swift에 아래의 로직을 추가한다.
  • CAFrameRateRange를 수정할 때 120으로 올리면 오히려 더 끊기는 느낌을 받는다. 아무래도 Flutter에서 위젯을 그릴 때 처리 속도를 못따라 가는 것이 아닐까하는 뇌피셜...
 override func application(
        _ application: UIApplication,
        didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
    ) -> Bool {        
        if #available(iOS 15.0, *) {
            let displayLink = CADisplayLink(target: self, selector: #selector(step))
            displayLink.preferredFrameRateRange = CAFrameRateRange(minimum:10, maximum:10, preferred:10)
            displayLink.add(to: .current, forMode: .default)
                                                
        }
        
        GeneratedPluginRegistrant.register(with: self)
        return super.application(application, didFinishLaunchingWithOptions: launchOptions)
    }
    
    @objc func step(displaylink: CADisplayLink) {
        // Will be called once a frame has been built while matching desired frame rate
    }

profile
developer

1개의 댓글

comment-user-thumbnail
2023년 11월 13일

안녕하세요, 혹시 해당 코드 추가 후에 버벅이는 현상이 잘 해결되었는지 알 수 있을까요? 저는 코드 추가해도 동일하게 버벅이는 현상 나타나고 있어서요

답글 달기