#ios #objective-c #autolayout #ios-autolayout
#iOS #цель-c #автоматическое описание #ios-автозаполнение
Вопрос:
Я работал над тем, чтобы попытаться удовлетворить некоторые основные ограничения, но мне не повезло. Я уже работал с ограничениями раньше, и, похоже, это должно сработать. Я не уверен, что это проблема Apple, потому что я сталкивался с другими вопросами с ограничениями, в которых это было, однако решения, которым я следовал, не решили проблему.
Вот код, который я использую:
UITableViewController viewDidLoad Загрузка:
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 100;
Инициализация TestTableViewCell:
-(id)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
self.mainTextLabel = [[UILabel alloc] init];
self.mainTextLabel.frame = CGRectMake(0, 0, 0, 0);
[self.mainTextLabel setTextColor:[UIColor blackColor]];
[self.mainTextLabel setBackgroundColor:[UIColor colorWithHue:32 saturation:100 brightness:63 alpha:1]];
[self.mainTextLabel setFont:[UIFont fontWithName:@"HelveticaNeue" size:18.0f]];
self.mainTextLabel.numberOfLines = 0;
[self.contentView addSubview:self.mainTextLabel];
[self setupConstraints];
}
return self;
Настройка ограничений TestTableViewCell:
- (void)setupConstraints {
NSDictionary *viewsDictionary = @{@"textLabel":self.mainTextLabel};
NSArray *mainHorizontalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[textLabel]-20-|"
options:0
metrics:nil
views:viewsDictionary];
[self.contentView addConstraints:mainHorizontalConstraints];
NSArray *mainVerticalConstraints = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[textLabel]-20-|"
options:0
metrics:nil
views:viewsDictionary];
[self.contentView addConstraints:mainVerticalConstraints];
Получено сообщение об ошибке:
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want.
Try this:
(1) look at each constraint and try to figure out which you don't expect;
(2) find the code that added the unwanted constraint or constraints and fix it.
(Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
Я просто устанавливаю базовые верхние, нижние, начальные и конечные ограничения, и эти ограничения нарушаются. Я что-то упускаю из виду?
Комментарии:
1. Почему вы программно ограничиваете свой элемент tableview. показать пользовательский интерфейс вашего Tableview
2. Попробуйте установить для свойства «setTranslatesAutoresizingMaskIntoConstraints» значение false для tableViewCell.
3. @Rikh установил для «setTranslatesAutoresizingMaskIntoConstraints» значение false, и ограничения все еще нарушаются
4. @HimanshuMoradiya Я выполняю ограничения программно, потому что я работаю с устаревшим кодом
5. @MichaelLeech пожалуйста, обновите свой вопрос одним снимком экрана, чтобы легко понять, какие ограничения вы выполняете программно.
Ответ №1:
Установка translatesAutoresizingMaskIntoConstraints в NO на mainTextLabel устраняет проблему.