2017-03-06 13 views
1

사용자 정의 셀을 만들었습니다.이 셀에는 UIImageView 만 있어야합니다. 이미지가 변경되면 셀에 이미지에 맞는 높이를 변경해야합니다Eureka : 맞춤 행의 동적 높이

import UIKit 
import Eureka 

public class FirebaseImageCell: Cell<UIImage>, CellType{ 

    @IBOutlet weak var customImageView: UIImageView! 

    public override func setup() { 
     super.setup() 
    } 

    public override func update() { 
     super.update() 

     guard let image = row.value else { return } 
     customImageView.image = image 

     guard let cellWidth = UIApplication.shared.keyWindow?.frame.width else { return } 
     height = { cellWidth * (image.size.height/image.size.width) } 
    } 

} 

public final class FirebaseImageRow: Row<FirebaseImageCell>, RowType { 
    required public init(tag: String?) { 
     super.init(tag: tag) 
     cellProvider = CellProvider<FirebaseImageCell>(nibName: "FirebaseImageCell") 
    } 
} 

을 나는이 같은 행을 작성 :

let image = UIImage(named: "testImage")! 

let testSection = Section("Test Section") 
    <<< FirebaseImageRow("firebaseImageRow") { row in 
      row.value = image 
     } 
form +++ testSection 

어떤 시점에서 내가 셀에 이미지를 변경하려면 , 세포가 이미지에 맞게 높이를 변경해야합니다. 여기 이미지 변경 :

형태가 올바른 높이 세포를 얻을 수 초기화
func imageChange() { 

    guard let imageRow = form.rowBy(tag: "firebaseImageRow") as? FirebaseImageRow else { return } 
    let image = UIImage(named: "testImage2")   
    imageRow.value = image 
    imageRow.updateCell() 

} 

, fittet에 "testImage을"하지만, 이미지가 변경 후 높이가 동일하게 유지.

어떻게 셀의 높이를 동적으로 변경할 수 있습니까?

답변

1

내가 어쩌면 당신이 내 기능을 시도해 볼 수도, 당신이 질문에 대답하는 경우 확실하지 :

(1)은 셀의 높이를 기억하기 위해 NSMutableDictionary를 만들 수 있습니다. 높이가 변경되면 tableView 또는 section 또는 indexPath를 다시로드하십시오.

(2) ReactiveCocoa 사용자도이 문제를 해결할 수 있습니다. http://example.com/data/img.gif?width=271&height=360

그래서 우리는 쉽게 활성 이미지 뷰의 크기 및 업데이트를 얻을 수있다 "heightForRowAtIndexPath : 그리고 무엇보다도, 난 당신이

(3) 그런 우리의 프로젝트 설정 활성 이미지의 URL을 훅, KVO, MVVM에 대해 알고하는 것이 좋습니다 : "기능.

enter image description here enter image description here