在 tableview 单元格内制作包含图像的列表的正确方法 SWIFT
Right way to make a list with images inside a tableview cell SWIFT
我目前有一个 UITableView,其中每个单元格都包含一个用户列表。我目前在每个名称后使用 UITextView 和换行符进行设置。然后,我根据 group.This 中的人数设置单元格高度,效果很好,但现在我想在每次使用时添加个人资料图片。这是我想出的两种可能的解决方案。
- 每个 table 视图单元格中的一个 table视图
- 使用类似 this 的方法将图像添加为文本并保留当前文本视图。我相信这将是更好/更有效的选择。
这两个或其他选项中的哪个方法是执行此操作的正确方法/或最有效的方法。
UPDATE :我正在尝试从下面实施一个解决方案,这是我尝试过的,但是当 运行
时我什么也没看到
在故事板中添加堆栈视图
创建用户视图 CLASS
import UIKit
@available(iOS 9.0, *)
class UserView: UIStackView {
var name: String?
var image: UIImage? // OR var imageName: String?
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
private func setup() {
axis = .vertical
let imageView = UIImageView(image: image)
let nameLabel = UILabel()
nameLabel.text = name
addArrangedSubview(imageView)
addArrangedSubview(nameLabel)
}
}
索引路径行的单元格中的代码
cell.mainStackView.frame = CGRect(x: 0, y: 0, width: cell.cellColor.frame.width, height: cell.cellColor.frame.height)
for i in 0..<joinedArray.count {
let user = UserView()
user.name = joinedArray[i]
cell.mainStackView.addArrangedSubview(user)
}
您可以尝试将 UICollectionView
放在 UITableViewCell
中,而不是将 UITableView
放在 UITableViewCell
中。从技术上讲,它是相同的,但使用集合视图,您可以在不同布局中显示图像的方式获得更多的通用性(假设每个 UICollectionViewCell
为每个相应图像采用 UIImageView
)。 Ash Furrow 真的很不错 blog post on this as well as the respective GitHub rep.
我更喜欢 UITableViewCell 中的 UIStackView 和 UIStackView 作为每个用户条目的子视图
类似下面提到的内容
class UserView: UIStackView {
var name: String?
var image: UIImage? // OR var imageName: String?
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
private func setup() {
axis = .vertical
let imageView = UIImageView(image: image)
let nameLabel = UILabel()
nameLabel.text = name
addArrangedSubview(imageView)
addArrangedSubview(nameLabel)
}
}
我目前有一个 UITableView,其中每个单元格都包含一个用户列表。我目前在每个名称后使用 UITextView 和换行符进行设置。然后,我根据 group.This 中的人数设置单元格高度,效果很好,但现在我想在每次使用时添加个人资料图片。这是我想出的两种可能的解决方案。
- 每个 table 视图单元格中的一个 table视图
- 使用类似 this 的方法将图像添加为文本并保留当前文本视图。我相信这将是更好/更有效的选择。
这两个或其他选项中的哪个方法是执行此操作的正确方法/或最有效的方法。
UPDATE :我正在尝试从下面实施一个解决方案,这是我尝试过的,但是当 运行
时我什么也没看到在故事板中添加堆栈视图
创建用户视图 CLASS
import UIKit
@available(iOS 9.0, *)
class UserView: UIStackView {
var name: String?
var image: UIImage? // OR var imageName: String?
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
private func setup() {
axis = .vertical
let imageView = UIImageView(image: image)
let nameLabel = UILabel()
nameLabel.text = name
addArrangedSubview(imageView)
addArrangedSubview(nameLabel)
}
}
索引路径行的单元格中的代码
cell.mainStackView.frame = CGRect(x: 0, y: 0, width: cell.cellColor.frame.width, height: cell.cellColor.frame.height)
for i in 0..<joinedArray.count {
let user = UserView()
user.name = joinedArray[i]
cell.mainStackView.addArrangedSubview(user)
}
您可以尝试将 UICollectionView
放在 UITableViewCell
中,而不是将 UITableView
放在 UITableViewCell
中。从技术上讲,它是相同的,但使用集合视图,您可以在不同布局中显示图像的方式获得更多的通用性(假设每个 UICollectionViewCell
为每个相应图像采用 UIImageView
)。 Ash Furrow 真的很不错 blog post on this as well as the respective GitHub rep.
我更喜欢 UITableViewCell 中的 UIStackView 和 UIStackView 作为每个用户条目的子视图
类似下面提到的内容
class UserView: UIStackView {
var name: String?
var image: UIImage? // OR var imageName: String?
override init(frame: CGRect) {
super.init(frame: frame)
setup()
}
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
setup()
}
private func setup() {
axis = .vertical
let imageView = UIImageView(image: image)
let nameLabel = UILabel()
nameLabel.text = name
addArrangedSubview(imageView)
addArrangedSubview(nameLabel)
}
}