2017-02-20 2 views
0

이미지와 레이블이있는 테이블 뷰에 헤더가 있습니다. 나는 UIImage를 중심에두고 레이블을 그 아래에 고정 시키길 원합니다.프로그래밍 방식으로 UITableView 헤더에 제약 조건 추가

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 

    let headerLabel = UILabel() 
    let logoView = UIImageView() 

    headerLabel.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: 21) 
    headerLabel.text = self.navigationItem.title 
    headerLabel.textColor = UIColor.white 
    headerLabel.backgroundColor = UIColor.clear 
    headerLabel.textAlignment = NSTextAlignment.center 

    logoView.frame = CGRect(x: 0, y: 0, width: 90, height: 90) 
    let logo: UIImage = UIImage(named: self.navigationItem.title!)! 
    logoView.image = logo 
    logoView.contentMode = .scaleAspectFill 

    view.addSubview(headerLabel) 
    view.addSubview(logoView) 

    return topView 
} 

이 헤더의 상단 중앙에 레이블을두고, 왼쪽 상단 모서리에있는 로고 : 이것은 내 현재 코드입니다. 이미지를 가운데에 배치하고 그 아래에 레이블을 분홍색으로 표시하려면 제약 조건을 프로그래밍 방식으로 (스토리 보드 없음) 추가하려면 어떻게해야합니까? 프로그래밍 방식의 제약 조건 (예 : something.leftAnchor.constraint(equalTo....)을 사용하고 있지만 헤더를 처음 사용하는 것처럼이 상황에 적용하는 방법을 잘 모르겠습니다.

+0

당신은 헤더에 대한 사용자 정의 뷰 클래스를 생성하고이 모든 프레임/제약 조건을 추가하는 시도 해 봤나? 그런 다음이 viewForHeaderInSection 메서드에서 해당 뷰를로드합니까? –

+0

코드가 의미가 없습니다. 'view.addSubview'라고 할 때,'view'는 무엇입니까? – matt

답변

2

나는 중심에 UIImage를 붙이고 레이블을 그 아래에 고정시키고 싶습니다.

각 하위보기의 프레이밍 논리를 인접보기에 종속시킴으로써이를 달성 할 수 있습니다. 이를 프로그래밍 방식으로 수행하는 동안 관련된 기하학적 계산에 대해 신중해야합니다.

이 조각은 그것을 수행해야합니다

override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? { 

    let logoView = UIImageView() 

    logoView.frame = CGRect(x: tableView.center.x - 90/2, y: 0, width: 90, height: 90) 
    let logo: UIImage = UIImage(named: self.navigationItem.title!)! 
    logoView.image = logo 
    logoView.contentMode = .scaleAspectFill 

    view.addSubview(logoView) 

    let headerLabel = UILabel() 
    headerLabel.frame = CGRect(x: 0, y: logoView.frame.size.height, width: view.frame.width, height: 21) 
    headerLabel.text = self.navigationItem.title 
    headerLabel.textColor = UIColor.white 
    headerLabel.backgroundColor = UIColor.clear 
    headerLabel.textAlignment = NSTextAlignment.center 

    view.addSubview(headerLabel) 

    return topView 
} 
+0

아주 가깝습니다! 코드를 사용하면 로고가 중간에 있지만 헤더 상단에서 계속 붙어 있기 때문에 머리글의 중앙에 로고를 추가하고 싶습니다. 그리고 레이블 상단과 로고 하단 사이에 약간의 패딩이 있습니다. 아마 y 값을 조정해야할까요? – d0xi45

+0

좋아, 방금 두 y 값 모두 20을 추가했습니다. 고마워요! – d0xi45

+0

듣기에 다행입니다! – ystack

관련 문제