2015-06-26 2 views
0

У меня есть два UILabels и UIView в файле nib. Этот наконечник является заголовком для моего collectionView. В моем методе viewForSupplementaryElementOfKind: мне нужно изменить кадры этих трех объектов. Они меняются в соответствии с размером этикетки header.personCollege.Обновить UIView и UILabel Frame

[header.personCollege sizeToFit]; 
CGRect boxFrame = header.boxView.frame; 
boxFrame.origin.x = header.personCollege.frame.origin.x + header.personCollege.frame.size.width + 11; 
header.boxView.frame = boxFrame; 

CGRect yearFrame = header.personYear.frame; 
yearFrame.origin.x = boxFrame.origin.x + boxFrame.size.width + 11; 
header.personYear.frame = yearFrame; 

[header.personYear setNeedsDisplay]; 
[header.personCollege setNeedsDisplay]; 
[header.boxView setNeedsDisplay]; 

Проблема заключается в том, setNeedsDisplay не меняет кадры. Кадры изменяются только после вызова reloadData. Мне нужно, чтобы кадры менялись мгновенно. Я также использую autoLayout.

ответ

3

Поскольку вы используете AutoLayout, вы должны изменить «постоянное» значение ограничений, связанных с представлениями, вместо прямого изменения их кадров.

Вы можете начать с создания IBOutlets/IBOutletCollection с ограничениями, которые вы хотите изменить, а затем с помощью этих IBoutlets вы можете изменить их «постоянное» значение.

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