gpt4 book ai didi

swift - 如何更改 UICollectionViewCell 的框架以显示点击时隐藏的按钮?

转载 作者:行者123 更新时间:2023-11-30 10:50:03 25 4
gpt4 key购买 nike

我有一个自定义 UICollectionViewCell,它有一个 UIImage 和一个 UIButton

扩展单元格的框架为 110 x 60。默认情况下为 60x60。

当应用程序加载时,我希望单元格以 60x60 开始并仅显示图像。点击单元格时,单元格将更新为 110x60 帧并显示图像旁边的 UIButton。

目前,我的应用程序确实已加载,并且单元格为 60x60,但由于我的自动布局设置,图像被压扁且按钮为全尺寸。如果我点击单元格,它会更新它的框架,而且看起来很棒。

目标是仅先看到图像,然后在单元格更新其框架后看到按钮。

我还希望能够再次点击单元格并将其大小调整回 60x60,隐藏按钮并仅显示图像。

这是我目前正在尝试的:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
collectionView.performBatchUpdates(nil, completion: nil)
}

func collectionView(_ collectionView: UICollectionView,
layout collectionViewLayout: UICollectionViewLayout,
sizeForItemAt indexPath: IndexPath) -> CGSize {

switch collectionView.indexPathsForSelectedItems?.first {
case .some(indexPath):
return CGSize(width: 110.0, height: 60.0)
default:
return CGSize(width: 60.0, height: 60.0)
}

}

根据请求,我的 CollectionViewCell 类代码:

class myCollectionViewCell: UICollectionViewCell {

@IBOutlet weak var myImageView: UIImageView!
@IBOutlet weak var myButton: UIButton!

var myCellDelegate : myCollectionViewCellDelegate?

override func awakeFromNib() {
super.awakeFromNib()

self.layer.cornerRadius = 30
self.layer.masksToBounds = true

myImageView.layer.cornerRadius = myImageView.frame.width / 2
myImageView.layer.masksToBounds = true
}

// MARK: - Actions

@IBAction func myButtonTapped(_ sender: Any) {
self.myCellDelegate?.actionClicked(self)
}
}

需要注意的是,那里没有太多内容,所以不确定它是否有帮助。我只是调整单元格和图像的cornerRadius,然后为按钮的操作创建委托(delegate)。

最佳答案

我认为很大程度上取决于 nib 文件中的约束。

选项 1

界面构建器>选择ImageView>右面板>尺寸检查器>使用“内容拥抱优先级”和“内容压缩阻力”

特别是 imageView 的水平压缩阻力必须大于按钮的压缩阻力。

系统根据这两个参数指示的优先级选择要拉伸(stretch)的 View 。

选项 2


Top
+-------------+--------+
| | |
| | |
Left| (Image) |(Button)|Right
| | |
| | |
+-------------+--------+
Bottom

<------------->
Width

Left, Top, Right, Bottom ---> constraint to the cell contentView
Width ---> set to a fixed 60
(Remember to enable clipsToBounds)

当单元格放大时,您的按钮就会出现。您最终可以添加动画。

关于swift - 如何更改 UICollectionViewCell 的框架以显示点击时隐藏的按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54794157/

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