2017-12-22 17 views
0

"close"에 UIButton을 추가하는 코드가 있습니다. 그 코드는 훌륭합니다.UIPageControl Swift에 UIButton의 CenterYAnchor를 정렬하십시오.

일하고 CODE : 다음

class func closeButton(_ pageController: UIPageViewController) -> UIButton { 

    let button = UIButton() 

    button.setTitleColor(UIColor.white, for: UIControlState()) 
    button.setTitle("Close", for: UIControlState()) 
    button.titleLabel!.font = UIFont.systemFont(ofSize: 15) 
    button.contentHorizontalAlignment = UIControlContentHorizontalAlignment.left 
    button.translatesAutoresizingMaskIntoConstraints = false 

    pageController.view.addSubview(button) 

    button.widthAnchor.constraint(equalToConstant: 50).isActive = true 
    button.heightAnchor.constraint(equalToConstant: 36).isActive = true 
    button.trailingAnchor.constraint(equalTo: pageController.view.trailingAnchor).isActive = true 
    button.bottomAnchor.constraint(equalTo: pageController.view.bottomAnchor).isActive = true 

    return button 
} 

그러나 나는 아이폰 X 시뮬레이터에 내 코드를 테스트하고 UIPageControl 다른 아이폰보다 바닥에서 훨씬 높다. 이제 방금 추가 한 닫기 버튼이 둥근 모서리에 있고 UIPageControl이 훨씬 더 높습니다.

let pageControl: UIPageControl = UIPageControl.appearance() 

그리고 다음으로 button.bottomAnchor.constraint... 교체 :

button.centerYAnchor.constraint(equalTo: pageControl.centerYAnchor).isActive = true 

그러나이 오류가 발생되도록

그래서 그때로하여 UIPageControl를 참조했습니다. 나는 UIPageControl.frame을 인쇄하려고했는데 그것은 0,0,0,0입니다. 그래서 나는 그것과 관련이 있다고 가정하고 있습니다.

UIPageControl에 대한 제한을 만드는 방법이 있습니까?

답변

1

() 메서드 layoutSubviews에 제한 조건을 갱신하기 위해 사용자 정의보기 시도를 사용하는 경우, 또는 뷰 컨트롤러의 viewDidLayoutSubviews() 메서드 :

func layoutSubviews() { 
    super.layoutSubviews() 
    button.centerYAnchor.constraint(equalTo: pageControl.centerYAnchor).isActive = true 
} 
+0

내가 두 부분으로 기능을 분할. 단추를 만드는 단추와 단추를 만드는 단추. 그것을 만드는 첫 번째 부분은 여전히'ViewDidLoad'를 호출하지만'viewDidLayoutSubviews'를 호출하는 두 번째 부분을 제약합니다. 너는 나를 거기에 데려왔다. 대부분 'viewDidLayoutSubviews'에 모든 것을 넣을 수 있지만 'isHidden = true'를 결정하는 또 다른 부분이 있으므로'ViewDidLoad '에서 버튼을 만들어야합니다. 다시 한 번 감사드립니다! –

+0

좋은 선택;) viewDidLayoutSubviews에서 pageControl 프레임을 얻었으므로 여기에서 제약 조건을 업데이트 할 수 있습니다. 대신에 단추를 만든 부분이 viewDidLoad에서 호출하는 것이 옳습니다. 천만에요 ;) –