뷰에 UIButton의 하위 클래스가 있습니다. iOS 6, 5 등에서 잘 작동합니다. 그러나 iOS 7에서는 setTitle : forState를 사용하여 제목을 변경하려고 할 때 지연이 있음을 알 수 있습니다. 나는 기초가 끊임없이 나의 통제에 layoutSubviews를 부르고 있다는 사실에이 문제를 추적했다. 그리고 이것은 CPU 사용이 앱의 일생 동안 100 % 주위에 공중제비가되게한다.iOS 7에서는 layoutSubviews 메서드가 UIButton 하위 클래스에서 계속 호출됩니다.
내 하위 클래스에서 layoutSubviews를 무시하고 문제를 진단하기 위해 중단 점을 추가했습니다. 백 트레이스는 기초의 [UIView layoutSublayersOfLayer] 메서드에서 호출 된 메서드 만 보여줍니다. 물론,
[super layoutSubviews];
는 CPU 문제가 사라집니다하지만, 다른 문제가 발생 :이 줄을 주석으로 경우 것이
는참고.
본 사람이 있습니까? iOS 7이 layoutSubview를 계속 호출하는 이유는 무엇입니까?
몇 가지 코드를 제공해 주시겠습니까? 일반적으로 당신은'layoutSubviews'를 서브 클래 싱하기 때문에 오직 그 메소드를 호출 할 것입니다. 레이아웃을 강제로해야하는 경우 일반적으로 여러 레이아웃 호출을 피하기 위해'setNeedsLayout'을 사용하므로 코드의 다른 부분에 뭔가 문제가있을 수 있습니다. –
고마워, 브라이언. 난 layoutSubviews를 서브 클래 싱하여 CPU pegging을 100 %로 진단했다. 메소드를 주석 처리 할 때 문제는 사라지지 않습니다. – dkmp
같은 맥락에서, 나는 또한 setNeedsLayout을 서브 클래스 화하고, (UButton _beginTitleAnimation) (개인 메소드)에서 호출되고 있다는 것을 발견했다. 나는 버튼에 대한 애니메이션을 비활성화하는 것에 만족할 것이지만, 그렇게 할 수있는 방법을 모른다. – dkmp