gpt4 book ai didi

ios - 为什么在 subview 中添加 UILabel 会使其像素化

转载 作者:行者123 更新时间:2023-11-28 12:28:29 25 4
gpt4 key购买 nike

我正在制作一条消息,当 tableView 为空并且我在我的 subView 中添加了一个标签并且它看起来是像素化时显示。但是当我在我的 tableView 中添加一些东西并将其删除时,显示的消息 (UILabel) 就完全没问题了。不知道为什么。

在我的 self.tableView.backgroundView = emptyLabel 中添加标签解决了这个问题,但我想添加两个标签,所以我在 subView 中添加一个标签,使其像素化。

这是我的代码:

class ReminderTableViewController: UITableViewController
{

@IBOutlet var myTableView: UITableView!
@IBOutlet weak var dateLabel: UIView!
@IBAction func back(_ sender: Any) {
dismiss(animated: true, completion: nil)
}


override func viewDidLoad() {
super.viewDidLoad()

self.tableView.separatorColor = UIColor.clear
tableView.separatorStyle = .none
}

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "details", sender: self)

}
public func buttonImageForEmptyStateView() -> UIImage? {
return UIImage.init(named: "Exclamation Mark Filled-100-2")
}



override func viewDidAppear(_ animated: Bool) {
tableView.reloadData()
self.reloadEmptyState(forTableView: self.tableView)

}


override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}


override func numberOfSections(in tableView: UITableView) -> Int {

return 1
}

override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {


if list.count==0{
let emptyLabel=UILabel(frame: CGRect(x: 0,y: 0, width: self.view.bounds.width, height: self.view.bounds.height))
let emptyLabel2=UILabel(frame: CGRect(x: 0.0,y: 20.0, width: self.view.bounds.width, height: self.view.bounds.height))


self.view.addSubview(emptyLabel2)
self.view.addSubview(emptyLabel)

let emptyImage = UIImageView(image: UIImage(named: "Quote Right Filled-100 (3)"))
emptyImage.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(emptyImage)
emptyImage.alpha=0.1
NSLayoutConstraint.activate([
emptyImage.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
emptyImage.centerYAnchor.constraint(equalTo: self.view.centerYAnchor),
emptyImage.heightAnchor.constraint(equalToConstant: 90),
emptyImage.widthAnchor.constraint(equalToConstant: 90)
])


emptyLabel.text = "no present reminders"
emptyLabel.textColor=UIColor.darkGray
emptyLabel.font=UIFont(name: "HelveticaNeue-Light", size: 18)
emptyLabel.textAlignment = NSTextAlignment.center

emptyLabel2.text = "you add by going back to the homescreen"
emptyLabel2.textColor=UIColor.gray
emptyLabel2.font=UIFont(name: "HelveticaNeue-Light", size: 11)
emptyLabel2.textAlignment = NSTextAlignment.center


self.tableView.separatorStyle = UITableViewCellSeparatorStyle.none

return 0
}
else{
return (list.count)
}

}

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

let cell=UITableViewCell(style: UITableViewCellStyle.default, reuseIdentifier: "cell")
cell.textLabel?.text=list[indexPath.row]
cell.contentView.backgroundColor = UIColor(red:0.89, green:0.89, blue:0.89, alpha:0.7)
cell.textLabel?.textColor=UIColor.black
cell.textLabel?.font=UIFont(name: "HelveticaNeue-Light", size: 16)
return (cell)
}





override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath) {
if editingStyle==UITableViewCellEditingStyle.delete{
list.remove(at: indexPath.row)
tableView.reloadData()
}
}
}

最佳答案

numberOfRowsInSection 被多次调用,所以没有添加 subview 的好地方,因为每次调用此函数时另一个 UILabel 的实例添加到 View 层次结构。

删除 numberOfRowsInSection 中的添加标签。添加类变量:

var emptyLabel: UILabel!
var emptyLabel2: UILabel!
var emptyImage: UIImageView!

然后添加函数

 func createEmptyLabels() {
emptyLabel=UILabel(frame: CGRect(x: 0,y: 0, width: self.view.bounds.width, height: self.view.bounds.height))
emptyLabel2=UILabel(frame: CGRect(x: 0.0,y: 20.0, width: self.view.bounds.width, height: self.view.bounds.height))


self.view.addSubview(emptyLabel2)
self.view.addSubview(emptyLabel)

emptyImage = UIImageView(image: UIImage(named: "Quote Right Filled-100 (3)"))
emptyImage.translatesAutoresizingMaskIntoConstraints = false
self.view.addSubview(emptyImage)
emptyImage.alpha=0.1
NSLayoutConstraint.activate([
emptyImage.centerXAnchor.constraint(equalTo: self.view.centerXAnchor),
emptyImage.centerYAnchor.constraint(equalTo: self.view.centerYAnchor),
emptyImage.heightAnchor.constraint(equalToConstant: 90),
emptyImage.widthAnchor.constraint(equalToConstant: 90)
])


emptyLabel.text = "no present reminders"
emptyLabel.textColor=UIColor.darkGray
emptyLabel.font=UIFont(name: "HelveticaNeue-Light", size: 18)
emptyLabel.textAlignment = NSTextAlignment.center

emptyLabel2.text = "you add by going back to the homescreen"
emptyLabel2.textColor=UIColor.gray
emptyLabel2.font=UIFont(name: "HelveticaNeue-Light", size: 11)
emptyLabel2.textAlignment = NSTextAlignment.center

emptyLabel.isHidden = true
emptyLabel2.isHidden = true
emptyImage.isHidden = true
}

viewDidLoad中调用这个函数

numberOfRowsInSection 中:

let hideEmptyViews = (list.count != 0)
emptyLabel.isHidden = hideEmptyViews
emptyLabel2.isHidden = hideEmptyViews
emptyImage.isHidden = hideEmptyViews

关于ios - 为什么在 subview 中添加 UILabel 会使其像素化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42743748/

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