gpt4 book ai didi

ios - 自定义 UITableView Cell 的堆栈 View 无法检测到 super View 维度

转载 作者:行者123 更新时间:2023-11-28 07:30:36 24 4
gpt4 key购买 nike

上下文 我有一个 UITableViewController,其中包含在 .xib 文件中设计的自定义单元格。在该 .xib 文件中,我试图设置动态宽度,以便将单元格宽度拆分为三个 subview 。

问题是单元格似乎无法获得合适的宽度,导致单元格无法填满整个宽度。这里有一张图片可以更好地说明我在说什么。

cell_not_filling_width

我的理解(可能完全误解了这一点)在 .xib 文件中设置框架约束是不好的 b/c 程序直到运行时才知道宽度。换句话说,awakeFromNib (1.) 在确定屏幕宽度之前加载...所以我知道如何解决这个问题。任何指导将不胜感激。

  1. 大概这是设置宽度的地方 - 当我查看 .xib 文件时,我的界面生成器上的宽度与我在 cellForRowAt
  2. 打印出来的宽度相同

注释 在我的 viewDidLoad 函数中,我已经注册了 nibfile,所以我认为这不是问题所在。 tableView.register(UINib(nibName: "NewTableViewCell", bundle: nil) , forCellReuseIdentifier: "newTableViewCell")

这里有一些可能相关的代码。

NewTableViewCell.swift

import UIKit

class NewTableViewCell: UITableViewCell {

@IBOutlet var typeLabel: UILabel!
@IBOutlet var timeLabel: UILabel!
@IBOutlet var completedLabel: UILabel!
@IBOutlet var correctLabel: UILabel!
@IBOutlet var parentView: UIView!

override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}

}

父 View 是包含三个 subview 的 View 。

Here's .xib 文件的图片

Here's我对 .xib 文件的约束的图片(看起来很杂乱)

更新尝试了堆栈 View 方法:XCode 只是将宽度定义为具有最大宽度的 subview (根据文本的大小)

Here是当前情况和当前约束的图片

我想出了 constraints on the label也可能是相关的:

更新2好的,我想我已经找到问题所在;基本上堆栈 View 似乎无法检测到 super View 的长度和宽度及其尺寸。

注意我已经编辑了约束条件。

Here如果我将宽度和高度设置为常量值,它会是什么样子。 stack view实际上会去设置约束

Here如果我把这些限制去掉,它会是什么样子。所以看起来宽度和高度为 0。这就是为什么我认为没有从 super View 中采用约束。

有人知道如何解决这个问题吗?

最佳答案

在 cellforRow 中尝试以下代码。

为 stackviewWidth 添加 IBOutliet 并动态设置,如下所示。还可以通过向单元格添加背景颜色来检查单元格是否达到设备的全宽。

if  let appDelegate =  UIApplication.shared.delegate as? AppDelegate,
let window = appDelegate.window {
cell.stackViewWidthConstraint = window.bounds.width
}

关于ios - 自定义 UITableView Cell 的堆栈 View 无法检测到 super View 维度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54848195/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com