2017-09-23 11 views
0

와 애니메이션을 가져올 수 없습니다 내가 '이로티 : 이름

var loadingView = LOTAnimationView(name: "preloader") 

같은 애니메이션을 얻으려고 할 때 나는 로티 2.1.3, 엑스 코드 (9)와 IOS (11)

을 사용하고 있습니다 m이 오류를 복용 : + [LOTComposition animationNamed : inBundle을 :] : 애니메이션

발견하지만 아래와 같이 애니메이션을 얻는 것은 잘 작동하지

var loadingView = LOTAnimationView(filePath: "/Users/username/Git/iOS/Swift/LottieTest/LottieTest/preloader.json") 

내가 사용하는 preloader.json은 다음과 같습니다 https://www.lottiefiles.com/storage/datafiles/Hhw0wgYmETDTkxW/data.json

여기서 내가 뭘 잘못하고 있니?

답변

0

내가 해결 내 문제. Appleantly 그것은 내 잘못이었다. 당신이 다음을 수행해야 LOTAnimationView(name: "name") 초기화 방법을 사용하기 위해서는 ... Xcode 프로젝트에서

후 관리자 (엑스 코드의 오른쪽 패널)에, 당신의 preLoader.json 파일을 클릭에 체크 박스를 클릭 대상 회원의 프로젝트 이름

1

매우 흥미롭지 만 json 파일 사용과 같은 다른 init 메소드를 사용하고 싶지 않으십니까?

나는 Lottie의 문서를 체크 아웃했고이 초기화 함수 뒤에있는 설명을 찾을 수없는 것 같습니다. LOTAnimationView(name: "name"). Lottie의 예에서 알 수 있듯이 LottieLogo.json 파일에는 내 프로젝트의 내 json 파일뿐 아니라 질문에 제시 한 json 파일과 다른 데이터가 있습니다. 그럼에도 불구하고

, 당신의 프로젝트로 JSON 파일을 추가하고 그것을 읽고 로티의 init 함수 사용 -> 내가 GPKithttps://github.com/glennposadas/gpkit-ios라는 내 작은 프로젝트에 JSON 파일을 읽기위한 함수를 만들어

LOTAnimationView(json: jsonObject) : D를 다음과 같이 로티에 대한 위의 기능을 사용

public class GPJSONReader { 

    /** Get the whole JSON object from a file 
    * @returns an optional dictionary [String: Any]? 
    */ 

    public class func readJson(fileName: String, withBlock completion: ([String : Any]?) -> Void) { 
     do { 
      if let file = Bundle.main.url(forResource: fileName, withExtension: "json") { 
       let data = try Data(contentsOf: file) 
       let json = try JSONSerialization.jsonObject(with: data, options: []) 
       if let object = json as? [String : Any] { 
        GPLog(classSender: self, log: "JSON found as dictionary") 
        completion(object) 
       } else { 
        GPLog(classSender: self, log: "JSON is invalid") 
        completion(nil) 
       } 
      } else { 
       GPLog(classSender: self, log: "No file found!") 
       completion(nil) 
      } 
     } catch { 
      GPLog(classSender: self, log: error.localizedDescription) 
      completion(nil) 
     } 
    } 
} 

:

// Animate here... 
GPJSONReader.readJson(fileName: "connecting", withBlock: { (jsonObject) in 
    if let jsonObject = jsonObject { 
     self.animationView = LOTAnimationView(json: jsonObject) 
     self.animationView.loopAnimation = true 
     self.animationView.play() 
    } 
}) 
+0

답변 해 주셔서 감사합니다. 나는 당신이 말하는 것처럼 다른 init 메소드를 사용해야한다고 생각한다. 나는 lottie가있는 버그가 있다고 믿습니다. 나는 그것에 관한 이슈를 열었습니다. https://github.com/airbnb/lottie-ios/issues/430 –