Swift – UITableViewCell класс contentView программные ограничения не имеют ширины

class Cell:UITableViewCell { var myImage:UIImageView = UIImageView() override init(style: UITableViewCellStyle, reuseIdentifier: String!) { myImage.setTranslatesAutoresizingMaskIntoConstraints(false) time.setTranslatesAutoresizingMaskIntoConstraints(false) contentView.addSubview(userImage) contentView.addSubview(time) let viewsDict = ["contentView":contentView,"myImage":myImage,"time":time] contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[contentView(100)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict)) contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-30-[myImage(50)]-[time]|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict)) contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-25-[myImage(50)]-25-|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict)) } } 

Я хочу, чтобы время было прикреплено в правой части подвью, которое является contentView, но оно находится рядом с myImage: портретный режим даже в ландшафтном режиме ContentView не достигает всего экрана: ландшафтный режим

Я пытался с contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[contentView]|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict)) , но я получил сообщение об ошибке:

 The view hierarchy is not prepared for the constraint: <NSLayoutConstraint:0x79e5d7c0 H:|-(0)-[UITableViewCellContentView:0x79e59f70] (Names: '|':myApp.Cell:0x79e58f00'cell' )> When added to a view, the constraint's items must be descendants of that view (or the view itself). This will crash if the constraint needs to be resolved before the view hierarchy is assembled. Break on -[UIView _viewHierarchyUnpreparedForConstraint:] to debug. 2015-01-13 20:05:11.546 myApp[6117:775684] View hierarchy unprepared for constraint. Constraint: <NSLayoutConstraint:0x79e5d7c0 H:|-(0)-[UITableViewCellContentView:0x79e59f70] (Names: '|':myApp.Cell:0x79e58f00'cell' )> Container hierarchy: <UITableViewCellContentView: 0x79e59f70; frame = (0 0; 320 44); gestureRecognizers = <NSArray: 0x79e5a8a0>; layer = <CALayer: 0x79e5a140>> | <UILabel: 0x79e59520; frame = (0 0; 0 0); userInteractionEnabled = NO; layer = <_UILabelLayer: 0x79e595e0>> | <UIImageView: 0x79e59750; frame = (0 0; 0 0); clipsToBounds = YES; userInteractionEnabled = NO; layer = <CALayer: 0x79e597d0>> View not found in container hierarchy: <myApp.Cell: 0x79e58f00; baseClass = UITableViewCell; frame = (0 0; 320 44); layer = <CALayer: 0x79e59b50>> That view's superview: NO SUPERVIEW 2015-01-13 20:05:11.857 myApp[6117:775684] *** Terminating app due to uncaught exception 'NSGenericException', reason: 'Unable to install constraint on view. Does the constraint reference something from outside the subtree of the view? That's illegal. constraint:<NSLayoutConstraint:0x79e5d7c0 H:|-(0)-[UITableViewCellContentView:0x79e59f70] (Names: '|':myApp.Cell:0x79e58f00'cell' )> view:<UITableViewCellContentView: 0x79e59f70; frame = (0 0; 320 44); gestureRecognizers = <NSArray: 0x79e5a8a0>; layer = <CALayer: 0x79e5a140>>' 

UPDATE: я фиксирую ширину строки при добавлении ограничений в tableView, но время метки по-прежнему не находится в правой части contentView. Какие-либо предложения? Похоже, что ContentView не длиннее ширины таблицы. Я не знаю…

3 Solutions collect form web for “Swift – UITableViewCell класс contentView программные ограничения не имеют ширины”

Попробуйте добавить ограничение contentView в супервизор:

 contentView.superview.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[contentView(100)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict)) 

Вам также может потребоваться вызвать это для правильной визуализации ячейки:

 self.setTranslatesAutoresizingMaskIntoConstraints(false) 

Вы можете установить выравнивание текста меток вправо, затем метка будет выровнена с правой стороны contentView. Что-то вроде этого.

 time.textAlignment = NSTextAlignment.Right 

Я бы предложил использовать следующую настройку для ваших ограничений (заменив ваш код, начиная с строки viewDict ):

 let viewsDict = ["contentView":contentView,"myImage":myImage,"time":time] self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:[contentView(100)]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict)) self.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:[-10-contentView-10-]", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict)) contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|-30-[myImage(50)]-(>=10)-[time]|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict)) contentView.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-25-[myImage(50)]-25-|", options: NSLayoutFormatOptions(0), metrics: nil, views: viewsDict)) self.setTranslatesAutoresizingMaskIntoConstraints(false) contentView.setTranslatesAutoresizingMaskIntoConstraints(false) 
  • Недопустимый тень CALayer в UITableViewCell
  • UISearchController для TableView
  • Group TableView, используя заголовок секции саморазмера, после перезагрузки, если я прокручу вверх, tableview будет прыгать
  • iOS UITableView reloadData обновляет таблицу только во второй раз, когда я вызываю функцию перезагрузки
  • Обнаружение касания UIImageView в UITableViewCell
  • Как вызвать метод didSelectRowAtIndexPath с помощью UITapGestureRecognizer?
  • Как я могу получить доступ к конкретному экземпляру верхнего или нижнего колонтитула в UICollectionView?
  • UITableView heightForHeaderInSection не работает
  • Один из лучших способов конвертировать tableView в несколько страниц PDF в Swift, iOS
  • Возвращение «я», пока оно не установлено в результате «», когда я инициализирую пользовательскую ячейку
  • Показать UISearchDisplayTableView, когда строка поиска пуста
  • Interesting Posts

    @доступно с доступными версиями iOS – отсутствующие свойства

    Откройте приложение на отдельной вкладке на вкладке

    Обнаружение лица OpenCV в iPhone

    Текст UITextView теряет размер шрифта, когда я устанавливаю атрибут в NSTextStorage с помощью NSUnderlineStyleAttributeName

    Наша игра iOS только что была отвергнута за то, что у нее нет механизма восстановления товаров для жизни

    Передача голоса через Bluetooth в iOS

    Виджет iOS8 Today View Extension дает ошибку «Ошибка дефрагментации FairPlay» в магазине приложений

    iOS – UIBarButtonItem – Вертикальное положение заголовка кнопки Back Button не регулируется

    Пользовательский UITableviewcell показывает «фатальная ошибка: невозможно развернуть опцию.

    Не вызывать didBecomeActive, если фоновая задача истекает

    Создание статической библиотеки OpenFeint для iOS

    Преобразование сертификата push в формат P12 в приложении Windows для iPhone

    NSPredicate с a! =?

    Как перемещать четыре изображения из одного места в другое по горизонтали в ios

    Преобразование NSString в NSDate в быстром

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.