1
성능상의 이유로 (내 서브 클래스 UITableViewCell
내에서) UILabel
하위 뷰를 추가하는 대신 drawRect
으로 직접 텍스트를 그리는 실험을하고 있습니다. drawRect를 사용하여 모방 UILabel의 방향 변경 동작
그리고 텍스트의 순서로
가 방향 변경에 따라 다시 그려야하는, 내가 설정 한 뷰의contentMode
UIViewContentModeRedraw
에 :
- (id)initWithFrame(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[self setContentMode:UIViewContentModeRedraw];
}
return self;
}
- (void)drawRect:(CGRect)rect
{
[@"foo" drawInRect:CGRectInset(rect, 10, 10)
withFont:[UIFont systemFontOfSize:14]
lineBreakMode:NSLineBreakByWordWrapping];
}
스크롤이 훨씬 더 빨리, 그리고 모든 것이 완벽 – 거의 작동합니다.
문제는 :보기가 인터페이스 방향 회전 애니메이션을 애니메이션하는 동안 텍스트가 뒤틀림/늘어남 인 것으로 나타납니다. 오리엔테이션 전후에 멋지게 보입니다 만, 동안은 애니메이션입니다.
뷰가 늘어나는 것을 방지 할 수있는 방법이 있습니까? 기본적으로 인터페이스를 회전시킬 때 UILabels가 작동하는 방식을 모방합니까?
흥미 롭습니다! (이 접근법을 작동 시키려면'willAnimateRotationToInterfaceOrientation' 안에'setNeedsDisplay'를 호출해야합니다.) 아주 가까이에 있습니다 : 텍스트 자체가 더 이상 늘어나지 않고 UILabel과 비슷하게 움직입니다. 그러나 이제 * 전체보기 *가이 방식으로 움직입니다. 그것은 눈에 띄는 것이 아니지만 *보기의 * 프레임이 더 이상 부드럽게 움직이지 않습니다. – Emmett
네,이 문제를 해결하기 위해'drawRect'를 사용하는 단점 중 하나입니다. 각 개별 항목에 별도의 contentMode를 부여 할 수는 없습니다. –