gpt4 book ai didi

iOS UITableViewWrapperView 在带有 Xcode9 的 iOS 11 中不存在

转载 作者:搜寻专家 更新时间:2023-10-30 22:00:39 26 4
gpt4 key购买 nike

UITableViewWrapperView 在 iOS11 中不存在,当我使用 Xcode9 构建我的应用程序时。

我正在使用 UIViewinsertSubview 方法为我的 UITableView 设置背景 View ,当我使用 Xcode8 编译了我的代码,但是当我使用 Xcode9 构建相同的代码时,内容是不可见的(在 iOS 11 上),因为背景层覆盖了单元格。

下面是调试结果-

  1. Xcode9 和 iOS 11 -

    一个。添加背景之前

    ▿ 2 elements
    - 1 : <UIImageView: 0x7fe7f5f045c0; frame = (3 710.667; 408 2.33333); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x604000223f80>>
    - 2 : <UIImageView: 0x7fe7f5f01e30; frame = (408.667 3; 2.33333 385); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled> = NO; layer = <CALayer: 0x604000226720>>

    B.添加背景后

    ▿ 3 elements
    - 0 : <UIView: 0x7fe7f5e09840; frame = (0 0; 414 736); layer = <CALayer: 0x60400003d780>>
    - 1 : <UIImageView: 0x7fe7f5f045c0; frame = (3 710.667; 408 2.33333); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO; layer = <CALayer: 0x604000223f80>>
    - 2 : <UIImageView: 0x7fe7f5f01e30; frame = (408.667 3; 2.33333 385); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled> = NO; layer = <CALayer: 0x604000226720>>
  2. Xcode8 和 iOS 11 - 存在 UITableViewWrapperView -

    一个。添加背景之前

    3 elements
    - 0 : <UITableViewWrapperView: 0x7ffdbe81cc00; frame = (0 0; 375 647); gestureRecognizers = <NSArray: 0x608000244a10>; layer => <CALayer: 0x608000028cc0>;contentOffset: {0, 0}; contentSize: {375,> 647}>
    - 1 : <UIImageView: 0x7ffdbe406af0; frame = (3 641.5; 369 2.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO;layer = <CALayer: 0x608000028fe0>>
    - 2 : <UIImageView: 0x7ffdbe407320; frame = (369.5 637; 2.5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO;> layer = <CALayer: 0x608000029140>>

    B.添加背景后

    4 elements
    - 0 : <UIView: 0x7ffdbe505cc0; frame = (0 0; 375 667); layer = <CALayer: 0x60000002a460>>
    - 1 : <UITableViewWrapperView: 0x7ffdbe81cc00; frame = (0 0; 375 647); gestureRecognizers = <NSArray: 0x608000244a10>; layer =<CALayer: 0x608000028cc0>; contentOffset: {0, 0};contentSize: {375,647}>
    - 2 : <UIImageView: 0x7ffdbe40b0f0; frame = (3 641.5; 369 2.5); alpha = 0; opaque = NO; autoresize = TM; userInteractionEnabled = NO;layer = <CALayer: 0x608000029e00>>
    - 3 : <UIImageView: 0x7ffdbe40b550; frame = (369.5 637; 2.5 7); alpha = 0; opaque = NO; autoresize = LM; userInteractionEnabled = NO;layer = <CALayer: 0x608000029f00>>

设置背景的方法-

   private func setTableViewBackground() {

let backgroundView = UIView()
backgroundView.frame = view.frame

let maskPath: UIBezierPath = UIBezierPath(roundedRect: backgroundView.bounds, byRoundingCorners: ([.topLeft, .topRight]), cornerRadii: CGSize(width:20, height:20))

let maskLayer: CAShapeLayer = CAShapeLayer()
maskLayer.frame = backgroundView.bounds
maskLayer.path = maskPath.cgPath
backgroundView.layer.mask = maskLayer
backgroundView.backgroundColor = UIColor.red

myCustomTableView.insertSubview(backgroundView, at: 0)
}

在 iOS11 上使用 Xcode8 构建

Xcode8_iOS11

在 iOS11 上使用 Xcode9 构建

enter image description here

我找到了 this链接,这确认 UITableViewWrapperView 已从 iOS11 中删除,但就在我们使用 Xcode9 编译代码时?

最佳答案

这就是为什么我不喜欢使用未记录的功能。 Apple 人员可以根据需要更改它们,而无需通知。我对您的案例的建议是将表格 View 放在 IB 中的红色基板上并应用您的代码。

注意。不要忘记将 clipsToBounds 属性设置为 true

函数会更短:

private func setTableViewBackground() {
let backgroundView = self.tableViewSubstrate!
let maskPath: UIBezierPath = UIBezierPath(roundedRect: backgroundView.bounds, byRoundingCorners: ([.topLeft, .topRight]), cornerRadii: CGSize(width:20, height:20))
let maskLayer: CAShapeLayer = CAShapeLayer()
maskLayer.path = maskPath.cgPath
backgroundView.layer.mask = maskLayer
}

您可以在此处找到示例项目:https://github.com/AlexeyGolovenkov/TableWithRoundCorners

关于iOS UITableViewWrapperView 在带有 Xcode9 的 iOS 11 中不存在,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46797986/

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