我试图隐藏UILabel
..!
我在故事板中使用了一个表视图控制器,其中包含UIlabel
,TableView
& Segmented Control
。
我有两个类别,一个是Data&空数据。
当用户点击数据时 - >数据应出现在TableView&标签应隐藏。
当用户点击Empty - >数据应隐藏&标签应该出现。
我能做到这一点......但是Label在这里遇到了一个问题(它正在创造一个差距)
问题:
当有数据时,Label正在表视图的顶部创建一个间隙。
问题:
如何在隐藏标签时删除标签。
我想在视图的中心显示标签(用户友好)。
代码:
// MARK: - Properties
let sectionHeaders = ["One","Two"];
var rowValues = [["First","Second","Three"],["four","five","six"]];
// MARK: - IBOutlets
@IBOutlet weak var noDataLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Table View"
noDataLabel.isHidden = true
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
if (rowValues.isEmpty) {
return 0
} else {
return sectionHeaders.count
}
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
if (rowValues.isEmpty) {
return 0
} else {
return rowValues[section].count
}
}
override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
return sectionHeaders[section]
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = rowValues[indexPath.section][indexPath.row];
return cell
}
// MARK: - IBActions
@IBAction func segmentButtonPressed(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
if rowValues.isEmpty {
noDataLabel.isHidden = true
rowValues = [["First","Second","Three"],["four","five","six"]];
}
} else {
rowValues.removeAll()
noDataLabel.isHidden = false
}
tableView.reloadData()
}
答案 0 :(得分:4)
您可以更改UILabel
框架高度,如下所示,这将解决您的问题。
func editLabelHeight(edit: Bool) {
if edit {
var labelFrame = noDataLabel.frame
labelFrame.size.height = 0
noDataLabel.frame = labelFrame
}
else {
var labelFrame = noDataLabel.frame
labelFrame.size.height = 44
noDataLabel.frame = labelFrame
}
}
在viewDidLoad
override func viewDidLoad() {
super.viewDidLoad()
editLabelHeight(edit: true)
}
在IBAction
@IBAction func segmentButtonPressed(_ sender: UISegmentedControl) {
if sender.selectedSegmentIndex == 0 {
if rowValues.isEmpty {
noDataLabel.isHidden = true
editLabelHeight(edit: true)
rowValues = [["First","Second","Three"],["four","five","six"]]
}
} else {
rowValues.removeAll()
editLabelHeight(edit: false)
noDataLabel.isHidden = false
}
tableView.reloadData()
}