添加到自定义UICollectionViewCell时出现意外的CAShapeLayer行为

Xandermorrison

我已经尝试了一段时间,但是我已经筋疲力尽了。我一直在尝试将CAShapeLayer添加到自定义UICollectionViewCell中,但是它要么不会绘制,要么有时只会绘制。我决定使用以下代码简化我遇到的问题:

class ViewController: UICollectionViewController, UICollectionViewDelegateFlowLayout {
    
    let cellId = "cell"
    let dataSource: [UIColor] = [.blue, .purple, .brown, .green, .red]

    override func viewDidLoad() {
        super.viewDidLoad()
        collectionView.isPagingEnabled = true
        collectionView.register(CellSubclass.self, forCellWithReuseIdentifier: cellId)
    }
    
    override func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
        return dataSource.count
    }
    
    override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: cellId, for: indexPath) as! CellSubclass
        cell.backgroundColor = dataSource[indexPath.item]
        return cell
    }
    
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
        return CGSize(width: view.frame.width, height: view.frame.height)
    }
}

class CellSubclass: UICollectionViewCell {
    
    let circle = CAShapeLayer()
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        circle.frame = bounds

        let circleCenter = self.center
        let path = UIBezierPath(arcCenter: circleCenter, radius: 100, startAngle: 0, endAngle: 2*CGFloat.pi, clockwise: true)
        circle.path = path.cgPath
        circle.fillColor = UIColor.gray.cgColor
        layer.addSublayer(circle)
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

我的UICollectionViewController具有以下流程布局

let layout = UICollectionViewFlowLayout()
layout.scrollDirection = .horizontal
layout.minimumLineSpacing = 0
let home = ViewController(collectionViewLayout: layout)

基于我所看到的其他StackOverflow问题,人们建议采用一种方法,在初始化时将形状子层添加到自定义UICollectionViewCell中,就像我完成的那样。但是,当我运行此代码时,得到以下输出:

样品

我们非常感谢您了解如何解决此问题,以使自定义单元格的每个实例都具有自己的形状。

马特

更改

    let circleCenter = self.center

    let circleCenter = CGPoint(x:self.bounds.midX, y:self.bounds.midY)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

结合使用SwiftUI和自定义发布者-使用.assign订阅者时出现意外行为

来自分类Dev

添加到模型属性时,Fuelphp ORM出现意外结果

来自分类Dev

将子图层添加到UICollectionViewCell时发生意外行为

来自分类Dev

语法错误,运行自定义rake任务时出现意外的tLABEL

来自分类Dev

语法错误,运行自定义rake任务时出现意外的tLABEL

来自分类Dev

在dplyr :: mutate中应用自定义函数时出现意外值

来自分类Dev

将自定义脚本添加到asp.net主页时出现语法错误

来自分类Dev

将自定义行为属性添加到视图

来自分类Dev

如何在没有自定义类的情况下将 UILabel 添加到 UICollectionViewCell?

来自分类Dev

串联时将自定义字符串添加到JS文件中

来自分类Dev

使用CocoaPods时如何将自定义项目配置添加到Xcode?

来自分类Dev

将自定义对象添加到JObject时出错

来自分类Dev

自定义UIView类的属性在调用并添加到UIScrollview时未设置

来自分类Dev

编译时清除添加到tensorflow 2中的自定义层的损失

来自分类Dev

将子视图添加到窗口中的视图时,将重置自定义NSCursor

来自分类Dev

将自定义对象添加到JObject时出错

来自分类Dev

将自定义属性添加到更新模型时丢失的.tt POCO类中

来自分类Dev

将自定义 NSView 添加到 NSScrollView 时的通知

来自分类Dev

在加载时将活动类添加到自定义链接

来自分类Dev

登录时将自定义字段添加到会话对象

来自分类Dev

在WIX自定义操作中使用System.IO.FileInfo会将意外的字符串添加到路径

来自分类Dev

传递异步操作时出现意外行为

来自分类Dev

导入软件包时出现意外行为

来自分类Dev

创建字典时出现意外行为

来自分类Dev

从istringstream读取字符时出现意外行为

来自分类Dev

在python中修改字典时出现意外行为

来自分类Dev

在Python中加载模块时出现意外行为

来自分类Dev

使用strcat附加字符时出现意外行为

来自分类Dev

使用重定向操作时出现意外行为

Related 相关文章

  1. 1

    结合使用SwiftUI和自定义发布者-使用.assign订阅者时出现意外行为

  2. 2

    添加到模型属性时,Fuelphp ORM出现意外结果

  3. 3

    将子图层添加到UICollectionViewCell时发生意外行为

  4. 4

    语法错误,运行自定义rake任务时出现意外的tLABEL

  5. 5

    语法错误,运行自定义rake任务时出现意外的tLABEL

  6. 6

    在dplyr :: mutate中应用自定义函数时出现意外值

  7. 7

    将自定义脚本添加到asp.net主页时出现语法错误

  8. 8

    将自定义行为属性添加到视图

  9. 9

    如何在没有自定义类的情况下将 UILabel 添加到 UICollectionViewCell?

  10. 10

    串联时将自定义字符串添加到JS文件中

  11. 11

    使用CocoaPods时如何将自定义项目配置添加到Xcode?

  12. 12

    将自定义对象添加到JObject时出错

  13. 13

    自定义UIView类的属性在调用并添加到UIScrollview时未设置

  14. 14

    编译时清除添加到tensorflow 2中的自定义层的损失

  15. 15

    将子视图添加到窗口中的视图时,将重置自定义NSCursor

  16. 16

    将自定义对象添加到JObject时出错

  17. 17

    将自定义属性添加到更新模型时丢失的.tt POCO类中

  18. 18

    将自定义 NSView 添加到 NSScrollView 时的通知

  19. 19

    在加载时将活动类添加到自定义链接

  20. 20

    登录时将自定义字段添加到会话对象

  21. 21

    在WIX自定义操作中使用System.IO.FileInfo会将意外的字符串添加到路径

  22. 22

    传递异步操作时出现意外行为

  23. 23

    导入软件包时出现意外行为

  24. 24

    创建字典时出现意外行为

  25. 25

    从istringstream读取字符时出现意外行为

  26. 26

    在python中修改字典时出现意外行为

  27. 27

    在Python中加载模块时出现意外行为

  28. 28

    使用strcat附加字符时出现意外行为

  29. 29

    使用重定向操作时出现意外行为

热门标签

归档