2016-09-04 5 views
1

하위 클래스가 UITableViewCell이고 하위 클래스가 UITableViewController입니다. 내 custom cell로 tableview를 popualating하고있다.Swift UITableViewCell Subview 레이아웃 업데이트 지연

내 스토리 보드에 UITableViewCell을 만들고 클래스에 내 사용자 지정 UITableViewCell Swift 파일을 만들고 식별자를 부여했습니다. 상단 공간 제약에 대한

Image View Constraints

상수 : 나는 다음과 같은 제약과 함께있는 UIImageView이 (스토리 보드) 내 사용자 지정 셀에

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { 
     let cell = tableView.dequeueReusableCellWithIdentifier("myIdentifier", forIndexPath: indexPath indexPath) 
     return cell 
} 

: 그럼 난과 컨트롤러의 세포를 만들 0인데, ImageView 상단이 셀 위쪽과 같을 것이라고 생각했습니다.

하지만, 내 셀의 이미지는 약간 아래로 밀어 :

UITableView with custom cell

흰색 그냥 테이블 섹션 헤더, 즉 완벽하게 작동합니다. 그러나 이미지 위에 나타나는 주황색 갭 (오렌지색이 셀의 배경색 임)을 볼 수 있습니다.

나는 사용자 정의 셀로 awakeFromNib에서 이미지 프레임 설정 시도 :

@IBOutlet weak var img: UIImageView! 
override func awakeFromNib() { 
    img.frame = CGRectMake(0, 0, img.frame.width, img.frame.height) 
} 

을하지만이 영향을 미치지 않았다, 그래서 나는 layoutSubviews의 프레임 설정을 시도 :

override func layoutSubviews() { 
    img.frame = CGRectMake(0, 0, img.frame.width, img.frame.height) 
} 

이 일을하지만 아래로 스크롤하고 TableView에서 백업 한 후 첫 번째 두 셀은 주황색 틈이 있지만 세 번째 셀로 스크롤하여 백업하면 갭이 사라집니다.

왜 이런 일이 일어나는 지 알고 계십니까? 이미지 뷰를 아래로 스크롤하고 백업 한 후에가 아니라 즉시 (0, 0)에 배치 할 수 있습니까?

답변

1

내가 당신의 상황을 재현하고 엑스 코드는 제약 -8이다 제안 셀의 상단에 정렬 할 수있는 이미지 뷰를 드래그하려고하고, 그것은 잘 작동하지만 만약 내가 0로 설정하면 당신의 문제처럼 배경색을 얻고, -8 또는 Xcode가 제안하고있는 것이 무엇이든 상위 제한을 설정해보십시오.

나는 내가 엑스 코드는, -8

+0

와우, 이상한. 이것은 효과가 있었다. 나는 이전에'img.frame.minY'가 8이되었다는 것을 알았습니다. 제약 조건을 -8로 설정하려고하지 않았습니다. 감사. – user3674647

0

시도는 다음과 같은 코드를 통해 tableViewCell의 높이를 설정하려면 :

func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { 
    return UIScreen.mainScreen().bounds.width 
} 
+0

안녕에 답장을 보내 주셔서 감사를 설정하고자하는 이유를 명확히 할 수없는 자동 레이아웃에 익숙하지 않다. 이 함수를 사용하여 행 높이를 이미 설정했습니다. 문제는 셀 높이가 아니라 셀 위쪽과 셀 내부의 이미지 뷰 하위 뷰 사이의 간격입니다. – user3674647

관련 문제