我刚刚开发完应用程序并决定将其安装在手机上。然后我发现我的桌面视图在我的手机上看起来有所不同!
这是应该看到的。 (仿真)
这就是我所看到的:(我的电话)
正如您所看到的,手机上的表格视图单元格在我的手机上看起来“更长”,但在模拟器中看起来很正常。我不明白为什么会这样。你能告诉我为什么吗?
我的手机是iPhone 6s Plus,运行iOS 8.1.2。我的模拟器是iPhone 6s Plus,运行iOS 9.3
要重现这一点,请在故事板中添加一个表视图控制器,并将这些内容放入原型单元格中:
黑色边框是图像视图。
然后,你知道,就像我一样把一些单元格放在表格视图中。
以下是表格视图的代码,以备不时之需:
class ColorSchemeController: UITableViewController {
var color: UIColor!
override func viewDidLoad() {
super.viewDidLoad()
}
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 5
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
switch section {
case 0...2:
return 3
case 3:
var h: CGFloat = 0
color.getHue(&h, saturation: nil, brightness: nil, alpha: nil)
if h == 0 {
return 3
}
return 5
case 4:
return 2
default:
return 0
}
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell1", forIndexPath: indexPath)
let imageView = cell.viewWithTag(1)! as! UIImageView
let label = cell.viewWithTag(2)! as! UILabel
func setColor(color: UIColor) {
imageView.backgroundColor = color
label.text = color.hexDescription()
}
switch indexPath.section {
case 0:
switch indexPath.row {
case 0:
setColor(self.color)
case 1:
setColor(self.color.rotateHueByDegrees(120))
case 2:
setColor(self.color.rotateHueByDegrees(-120))
default:
assert(false)
}
case 1:
switch indexPath.row {
case 0:
setColor(self.color)
case 1:
setColor(self.color.rotateHueByDegrees(150))
case 2:
setColor(self.color.rotateHueByDegrees(-150))
default:
assert(false)
}
case 2:
switch indexPath.row {
case 0:
setColor(self.color)
case 1:
setColor(self.color.rotateHueByDegrees(30))
case 2:
setColor(self.color.rotateHueByDegrees(-30))
default:
assert(false)
}
case 3:
switch indexPath.row {
case 0:
setColor(self.color)
case 1:
var h: CGFloat = 0
color.getHue(&h, saturation: nil, brightness: nil, alpha: nil)
if h == 0 {
var v: CGFloat = 0
self.color.getHue(nil, saturation: nil, brightness: &v, alpha: nil)
if v <= 0.1 {
setColor(self.color.incrementValueBy(0.1))
} else {
setColor(self.color.incrementValueBy(-0.1))
}
break
}
var s: CGFloat = 0
self.color.getHue(nil, saturation: &s, brightness: nil, alpha: nil)
if s <= 0.1 {
setColor(self.color.incrementSaturationBy(0.1))
} else {
setColor(self.color.incrementSaturationBy(-0.1))
}
case 2:
var h: CGFloat = 0
color.getHue(&h, saturation: nil, brightness: nil, alpha: nil)
if h == 0 {
var v: CGFloat = 0
self.color.getHue(nil, saturation: nil, brightness: &v, alpha: nil)
if v >= 0.9 {
setColor(self.color.incrementValueBy(-0.2))
} else {
setColor(self.color.incrementValueBy(0.2))
}
break
}
var s: CGFloat = 0
self.color.getHue(nil, saturation: &s, brightness: nil, alpha: nil)
if s >= 0.9 {
setColor(self.color.incrementSaturationBy(-0.2))
} else {
setColor(self.color.incrementSaturationBy(0.2))
}
case 3:
var v: CGFloat = 0
self.color.getHue(nil, saturation: nil, brightness: &v, alpha: nil)
if v <= 0.1 {
setColor(self.color.incrementValueBy(0.1))
} else {
setColor(self.color.incrementValueBy(-0.1))
}
case 4:
var v: CGFloat = 0
self.color.getHue(nil, saturation: nil, brightness: &v, alpha: nil)
if v >= 0.9 {
setColor(self.color.incrementValueBy(-0.2))
} else {
setColor(self.color.incrementValueBy(0.2))
}
default:
assert(false)
}
case 4:
switch indexPath.row {
case 0:
setColor(self.color)
case 1:
setColor(self.color.rotateHueByDegrees(180))
default:
assert(false)
}
default:
assert(false)
}
return cell
}
override func tableView(tableView: UITableView, titleForHeaderInSection section: Int) -> String? {
switch section {
case 0:
return "Triadic"
case 1:
return "Split Complements"
case 2:
return "Analogous"
case 3:
return "Monochromatic"
case 4:
return "Complements"
default:
return nil
}
}
}
如果你无法重现,这里是github链接:https://github.com//Sweeper777/ColorBible
下载Xcode项目并在手机上运行。
答案 0 :(得分:2)
我可以在模拟器8.1上重现相同的效果
我注意到rowHeight
的{{1}}设置为-1(tableView
),因此该问题与动态大小调整有关(不确定为什么,似乎是一种不同的行为) iOS 8)。
这似乎解决了这个问题(假设您不需要动态调整大小):
UITableViewAutomaticDimension
答案 1 :(得分:1)
在返回单元格之前尝试这样的事情
tableView.estimatedRowHeight = 100.0
tableView.rowHeight = UITableViewAutomaticDimension
其中“100.0”是您估计行高的原因。