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) 
  • Возможно ли создать не полный экран UITableView с помощью раскадровки?
  • UIScrollView - возврат в исходное положение без привязок
  • UITableView Отображение последнего значения цикла
  • Как динамически изменять размер статического UITableViewCell?
  • tableView didSelectRowAtIndexPath не работает должным образом на iOS 7. Почему?
  • Правильный способ определения ширины UITableViewCell для сгруппированных пользовательских ячеек?
  • Получить выбранный индекс UITableView
  • Swift Добавить нижний колонтитул в UITableView
  • Отображать все контакты с устройства iOS в настраиваемом виде viewcontoller, когда нажата кнопка контакта, а не по умолчанию.
  • Динамическая высота UITableViewCell не работает с классами размера
  • множественный наборView в нескольких ячейках tableView
  • Interesting Posts

    Можно ли изменить цвет UIPreviewAction?

    UIPopoverController dealloc получает вызов-ARC-окружение

    Пауза и возобновление анимации AnimateWithDuration ios

    Как узнать, завершилось ли выполнение нескольких блоков до принятия решения?

    Предупреждение о компоновщике Apple Mach-O (id): создание для MacOSX, но соединение с dylib, созданное для iOS

    iOS POST с AFNetworking: NSLocalizedDescription = Запрос не выполнен: ошибка внутреннего сервера (500)

    Как найти диапазон сегмента текста в iOS

    ReactiveCocoa – изменение побочных эффектов в сигналы

    Как добавить пользовательский CalloutView, загруженный из файла nib

    Событие UIKeyboardDidShowNotification срабатывает даже при наличии внешней клавиатуры

    Как вы создаете расширение для общего доступа в iOS8 без пользовательского интерфейса общего доступа

    создание мобильного приложения с существующего веб-сайта

    Индикатор прокрутки застревает, когда для UIScrollView отключено отскок

    где хранить загружаемые покупки в приложении?

    Авария UICollectionView при удалении последнего элемента

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