Чтобы создать темное наложение на экране, я добавляю представление поверх всех остальных представлений в UIWindow:
UIView *darkOverlayView = [[UIView alloc] initWithFrame:[UIScreen mainScreen].bounds];
darkOverlayView.backgroundColor = [[UIColor blackColor] colorWithAlphaComponent:0.85];
Затем я хочу центрировать UIImageView в новом darkOverlayView
и попытаться сделать следующее:
UIImageView *imageFromLink = [[UIImageView alloc] initWithImage:responseObject];
imageFromLink.translatesAutoresizingMaskIntoConstraints = NO;
CGFloat widerThanHeightBy = imageFromLink.bounds.size.width / imageFromLink.bounds.size.height;
[darkOverlayView addConstraint:[NSLayoutConstraint constraintWithItem:imageFromLink attribute:NSLayoutAttributeWidth relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:[UIScreen mainScreen].bounds.size.width]];
[darkOverlayView addConstraint:[NSLayoutConstraint constraintWithItem:imageFromLink attribute:NSLayoutAttributeHeight relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1.0 constant:[UIScreen mainScreen].bounds.size.height / widerThanHeightBy]];
Но каждый раз, когда он запускается, я получаю сообщение об ошибке:
Иерархия представлений не подготовлена для ограничения: при добавлении в представление элементы ограничения должны быть потомками этого представления (или самого представления). Это приведет к сбою, если ограничение необходимо разрешить до сборки иерархии представлений. Перерыв на -[UIView _viewHierarchyUnpreparedForConstraint:] для отладки. 2013-12-07 00:59:03.626 Jupiter[58008:70b] Просмотр иерархии не готов к ограничению. Ограничение: Иерархия контейнеров: > Представление не найдено в иерархии контейнеров: > - (null) Суперпредставление этого представления: NO SUPERVIEW
Как бы я обойти это? Или я должен использовать фреймы?