2016-10-14 1 views
1

Я создал пользовательский UITableViewCell с дополнительным UIImageView в xib. Я создал ограничения, в которых передний край метки прикреплен к задней кромке imageView.Пользовательский UITableViewCell с дополнительным UIImageView в xib

Изображение в изображенииView не является обязательным, и если я не устанавливаю изображение, я хочу удалить/скрыть изображениеView и переместить ярлык влево. Я попытался добавить и удалить ограничение в коде в layoutSubviews, но это нарушило другие ограничения.

Я нахожусь на правильном пути здесь? Я хочу, чтобы он вел себя как собственный стиль UITableViewCell Value1/2, если нет установленного изображения, чем все перемещается влево.

Благодаря

ответ

0

Да, вы на правильном пути. Легкий способ сделать это - вам нужно создать IBOutlet вашей постоянной видимости imageview. См. Изображение ниже.

Imageview Width IBOutlet

Затем установите ширину константу 0

if(// condition to check if imageview does not contain any image){ 
     _imgVwWidthConst.constant = 0; 
} 

Ваш этикетки автоматически переместится влево, как это занимает лидирующие места в вашей ImageView.

+0

Спасибо. Хотя это и не похоже на правильное решение, это сработало. Я бы подумал, что фактически удаление imageView и обновление всех ограничений будет правильным решением. Единственное, что мне нужно было сделать, это обновить пару ограничений, чтобы их константа была больше или равна. – bdaniels

0

Вы можете иметь два ограничения один для текстовой метки к левому краю вашего зрения:

| < - (> = 10) -> [Этикетка] ...

| < - (10) -> [ImageView] < - (10) -> [Label] ....

Так что если вы хотите скрыть изображение, вы можете скрыть изображение/деактивировать ограничения.

0

Невозможно сделать это автоматически, потому что UIImageView сохраняет свой размер независимо от того, установлен он или нет.

Один из подходов состоит в том, чтобы оставить установленную вами настройку и обновить ограничение метки в вашем коде, чтобы быть -yourImageView.bounds.size.width, когда нет изображения. Это изменит ваш ярлык, когда потребуется.