Разметка подкласса UITableViewCell испорчена в отключенной автоматической раскадкой
Я создал табличный вид с ячейками прототипов в раскадровке с "Использовать автозапуск", не установленным в Xcode 5.
Ячейки являются подклассами UITableViewCell, в основном для добавления IBOutlets и без кода внутри. Результатом является испорченный макет. Я попробовал изменить маски Autoresizing без везения. Также попробовал этот.
Если я, однако, реализую пустой layoutSubviews
, он отображается в порядке. Любая идея о том, что происходит?
Является автомаршрутом, несмотря на его снятие флажка?
Edit:
Подробнее...
@interface SettingDefaultTableViewCell : UITableViewCell
@property (nonatomic, weak) IBOutlet UILabel *label;
@property (nonatomic, weak) IBOutlet UIImageView *imageView;
@property (nonatomic, weak) IBOutlet UIView *backgroundView;
@end
@implementation SettingDefaultTableViewCell
- (void)layoutSubviews
{
// Emtpy implementation to fix weird layout bug
}
@end
Раскадровка с отключенным автоопределением:
Результат, когда layoutSubviews
исправлено выше, не используется:
Изменить 2:
- Ячейка настроена на неавторизовать подзаголовки.
- В то время как вышеприведенного должно быть достаточно, чтобы предотвратить автоматическую настройку subviews, все маски авторезистирования устанавливаются только для гибкого правого и нижнего полей.
- Только маркеp > установлен на гибкое левое поле. Гибкая ширина или высота.
Ответы
Ответ 1
Ячейка модифицируется недокументированным UITableViewCell layoutSubviews
:
- Несмотря на то, что не задано отсутствие подпроцессов с автоматизацией, реализация по умолчанию меняет кадр
backgroundView
.
- Он также перемещает
imageView
( " > " ) влево, несмотря на то, что он настроен как ячейка пользовательского стиля.
Таким образом, избегая выполнения super layoutSubviews
, он исправляет его.