2012-02-28 3 views
1

Я хочу повернуть UIView, но после поворота размер изображения изменяется. Я использую флаг autoresizing 'UIViewAutoresizingNone'.Поверните UIView и сохраните пропорции после вращения

Вот мой код: (вызывается из layoutSubViews)

- (void) setVerticalLabelFrame:(CGRect)r { 

r.origin.y +=100.0f; 
r.size.height = 20.0f; 
r.size.width = 180.0f; 
[[self rotatatingView] setFrame:r]; 
//[[self rotatatingView] setTransform:CGAffineTransformMakeRotation(M_PI/4.0f)]; 

}

Вот ленивая инициализация rotatingView.

- (UIView*)rotatatingView { 
if (rotatatingView == nil) { 
    rotatatingView = [[UIView alloc] initWithFrame:CGRectZero]; 
    [rotatatingView setBackgroundColor:[UIColor orangeColor]]; 
    [rotatatingView setAutoresizingMask:UIViewAutoresizingNone]; 
    [[self imageView] addSubview:rotatatingView]; 
} 
return rotatatingView; 

}

первый выстрел с заметил последняя линия, второй выстрел с линией незакомментированной. Любые идеи?

enter image description here enter image description here

ответ

1

Вы должны быть настройки bounds & center, если вы устанавливаете матрицу преобразования не-идентичности. В соответствии с the docs:

Предупреждения Если это свойство не является преобразованием идентичности, то значение свойства кадра не определенно, и поэтому должно быть проигнорировано.

Так попробовать что-то вроде этого:

- (void) setVerticalLabelFrame:(CGRect)r { 
    CGRect bounds = CGRectZero; 
    bounds.size.height = 20.0f; 
    bounds.size.width = 180.0f; 

    CGPoint center; 
    center.x = r.origin.x + (bounds.size.width/2.0f); 
    center.x = r.origin.y + (bounds.size.height/2.0f) + 100.0f; 

    [[self rotatingView] setTransform:CGAffineTransformIdentity]; 

    [[self rotatingView] setCenter:center]; 
    [[self rotatingView] setBounds:bounds]; 

    [[self rotatingView] setTransform:CGAffineTransformMakeRotation(M_PI/4.0f)]; 
} 
+1

Это на самом деле не поможет. Его все еще изменилось. – Konrad77

+0

Хм. Можете ли вы показать нам, что такое 'rotatingView', пожалуйста? Как это определено и т. Д.? – mattjgalloway

+0

обновил исходное сообщение с помощью моего ленивого кода инициализации для rotatingView. – Konrad77

Смежные вопросы