Проблема с высотой таблицы после изменения ориентации устройстваIOS

Программируем под IOS
Ответить
Anonymous
 Проблема с высотой таблицы после изменения ориентации устройства

Сообщение Anonymous »

Я показываю контроллер представления с табличным представлением собственного размера внутри представления-контейнера. См. зеленый цвет на изображении 1.
Изображение

Если ориентация устройства изменилась на альбомную, пользовательский интерфейс не вызывает проблем и отображается именно так, как я хочу. См. изображение ниже.
Изображение

Но если Я снова изменил ориентацию на портретный режим, тогда высота представления таблицы внутри Containerview не обновляется. Я добавил фиолетовый цвет фона в представление таблицы. См. изображение ниже.
Изображение

У меня есть попробовал view.setNeedsLayout(),ContainerView.setNeedsLayout(), view.layoutIfNeeded() внутри функции viewWillTransition. Но по-прежнему безуспешно.
Пожалуйста, помогите решить эту проблему.
Обновление:
Вот как я добавляю подпредставление в вид контейнера

Код: Выделить всё

func showMCQs() {
mcqKit = MCQKit()
mcqKit!.configureMCQV2()
addChild(MCQKit.mcqV2Controller)
containerView.addSubview(MCQKit.mcqV2Controller.view)
MCQKit.mcqV2Controller.didMove(toParent: self)
MCQKit.mcqV2Controller.view.anchor(top: containerView.topAnchor, left: containerView.leftAnchor, bottom: containerView.bottomAnchor, right: containerView.rightAnchor, paddingTop: 0, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: nil, height: nil, centerX: nil, centerY: nil)
}
extension UIView {
func anchor(top: NSLayoutYAxisAnchor?, left: NSLayoutXAxisAnchor?, bottom: NSLayoutYAxisAnchor?, right: NSLayoutXAxisAnchor?,  paddingTop: CGFloat?, paddingLeft: CGFloat?, paddingBottom: CGFloat?, paddingRight: CGFloat?, width: CGFloat?, height: CGFloat?, centerX: NSLayoutXAxisAnchor?, centerY: NSLayoutYAxisAnchor?) {
translatesAutoresizingMaskIntoConstraints = false

if let safeTop = top, let safePaddingTop = paddingTop {
topAnchor.constraint(equalTo: safeTop, constant: safePaddingTop).isActive = true
}

if let safeLeft = left, let safePaddingLeft = paddingLeft {
leftAnchor.constraint(equalTo: safeLeft, constant: safePaddingLeft).isActive = true
}

if let safeBottom = bottom, let safePaddingBottom = paddingBottom  {
bottomAnchor.constraint(equalTo: safeBottom, constant: -safePaddingBottom).isActive = true
}

if let safeRight = right, let safePaddingRight = paddingRight  {
rightAnchor.constraint(equalTo: safeRight, constant: -safePaddingRight).isActive = true
}

if let safeWidth = width, safeWidth != 0 {
widthAnchor.constraint(equalToConstant: safeWidth).isActive = true
}

if let safeHeight = height, safeHeight != 0{
heightAnchor.constraint(equalToConstant: safeHeight).isActive = true
}

if let centerX = centerX {
centerXAnchor.constraint(equalTo: centerX).isActive = true
}

if let centerY = centerY {
centerYAnchor.constraint(equalTo: centerY).isActive = true
}
}
Ниже приведен код табличного представления с автоматическим изменением размера.

Код: Выделить всё

class CustomTableView: UITableView {

// Self sizing tableView
override public func layoutSubviews() {
super.layoutSubviews()
if bounds.size != intrinsicContentSize {
invalidateIntrinsicContentSize()
}
}

override public var intrinsicContentSize: CGSize {
layoutIfNeeded()
return contentSize
}


Подробнее здесь: https://stackoverflow.com/questions/785 ... on-changed
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»