ios - 获取 UIView 的大小以编程方式添加 subview (计算出的 X、Y、宽度和高度)

标签 ios swift xcode uiview ios-autolayout

在segue中,我有一个UIVIew,它具有约束条件,将其布局为与顶部、左侧和右侧的屏幕以及底部的按钮相同的尺寸: enter image description here

然后从 ViewController 我以编程方式添加 UIButtons,如下所示:

override func viewDidLoad() {
        super.viewDidLoad()

        drawCards()
    }


private func drawCards(){
        let deck = Deck()

        var rowIndex = 0
        var columnIndex = 0

        let cardWidth = Int(Float((deckView.bounds.width) / 7))
        let cardHeight = Int(Float(cardWidth) * 1.5)

        for card in deck.cards{
            let x = (cardWidth / 2) * columnIndex
            let y = cardHeight * rowIndex

            let button = CardButton()
            button.delegate = self
            button.setCard(card: card, x: x, y: y, width: cardWidth, height: cardHeight)

            deckView.addSubview(button)

            columnIndex += 1

            if(columnIndex == 13){
                columnIndex = 0
                rowIndex += 1
            }
        }
    }

预期的行为是该函数应采用 UIView 的大小(称为 deckView),插入 UIButtons 并进行堆叠彼此重叠,并且设备之间具有一致的相同布局。然而,它在 iPhone 上看起来符合预期,但在 iPad 上则不然,因为 UIButtons 位于 UIView 之外: enter image description here

据我所知,这是因为 XY 值未正确计算,因为 UIView 的宽度> (deckView) 未正确检索(或按预期)。

为什么没有按预期检索 UIView 的宽度?(即为什么它在 iPhone 上按预期工作,但在 iPad 上却不然)

最佳答案

drawCards()viewDidLoad 移动到 viewDidLayoutSubviews

关于ios - 获取 UIView 的大小以编程方式添加 subview (计算出的 X、Y、宽度和高度),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59960341/

相关文章:

iOS Swift,使用标签更新 tableview CellForRow 之外的 UITableView 自定义单元格标签

ios - 随机访问 .plist 文件中的字典字符串值

ios - 不使用 PFQueryTableView 时,从 Parse 加载到 UITableViewController 的数据不均匀

ios - 在 Scrollview ios 中使用 textview 时避免多次滚动

ios - 为什么我从命令行找不到 xcodebuild fatal error 模块映射文件

ios - 如何从另一个 ViewController 更改一个 ViewController 上的标签文本

ios - Apple Mach-O 链接器和同上错误 - Xcode 8

ios - 组和文件夹是否必须用英文命名?

ios - 仅调用一个 UICollectionViewCell 的函数

swift - guard 语句中的多个 let 是否与单个 let 相同?