首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

iOS 13 UITableViewCell自定义accessoryView越界

是指在iOS 13及以上版本中,当我们自定义UITableViewCell的accessoryView时,可能会出现accessoryView越界的问题。

UITableViewCell是iOS开发中常用的用于展示列表数据的控件,它可以显示文本、图像等内容,并且可以在右侧显示一个accessoryView,用于展示额外的信息或者提供交互操作。

在iOS 13之前的版本中,我们可以通过设置UITableViewCell的accessoryView属性来自定义accessoryView,例如可以使用UIImageView来显示一个自定义的图标。然而,在iOS 13中,由于UITableViewCell的布局发生了变化,accessoryView的位置发生了偏移,导致自定义的accessoryView可能会越界显示。

为了解决这个问题,我们可以使用UITableViewCell的accessoryView的父视图accessoryViewContainer来进行布局。具体步骤如下:

  1. 创建一个自定义的UIView,例如customAccessoryView,用于替代accessoryView。
  2. 将customAccessoryView添加到UITableViewCell的accessoryViewContainer中。
  3. 在自定义的UIView中,根据需要添加子视图,并设置合适的布局约束。

这样做的好处是可以确保自定义的accessoryView在iOS 13及以上版本中正确地显示在UITableViewCell的右侧,并且不会越界。

以下是一个示例代码:

代码语言:txt
复制
// 自定义UITableViewCell
class CustomTableViewCell: UITableViewCell {
    // 自定义的accessoryView
    let customAccessoryView: UIView = {
        let view = UIView()
        view.backgroundColor = .red
        view.translatesAutoresizingMaskIntoConstraints = false
        return view
    }()
    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        // 添加customAccessoryView到accessoryViewContainer
        accessoryViewContainer.addSubview(customAccessoryView)
        
        // 设置customAccessoryView的布局约束
        NSLayoutConstraint.activate([
            customAccessoryView.trailingAnchor.constraint(equalTo: accessoryViewContainer.trailingAnchor),
            customAccessoryView.centerYAnchor.constraint(equalTo: accessoryViewContainer.centerYAnchor),
            customAccessoryView.widthAnchor.constraint(equalToConstant: 20),
            customAccessoryView.heightAnchor.constraint(equalToConstant: 20)
        ])
    }
    
    required init?(coder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

通过以上代码,我们可以在iOS 13及以上版本中正确地自定义UITableViewCell的accessoryView,并避免越界显示的问题。

推荐的腾讯云相关产品:腾讯云移动开发平台(https://cloud.tencent.com/product/mwp)

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

iOS-UI控件之UITableView(一)

UITableViewCellStyleDefault UITableViewCellStyleValue1 UITableViewCellStyleValue2 UITableViewCellStyleSubtitle cell 右边指示样式的属性accessoryView...UITableViewCellAccessoryDetailDisclosureButton UITableViewCellAccessoryCheckmark UITableViewCellAccessoryDetailButton cell 被点击的颜色变化iOS...UITableViewCellSelectionStyleGray UITableViewCellSelectionStyleDefault 创建 Cell 的性能分析及优化 cell的重用原理 iOS...设备的内存有限,如果用UITableView显示成千上万条数据,就需要成千上万个UITableViewCell对象的话,那将会耗尽iOS设备的内存。...UITableViewCell,然后返回给UITableView,重新显示到窗口中,从而避免创建新对象 还有一个非常重要的问题:有时候需要自定义UITableViewCell(用一个子类继承UITableViewCell

1.8K130

iOS开发-1.UITableView你会用吗?

前一段时间,公司招聘了一个新员工,界面做出来了,但是很卡,我看完他写的代码,发现没有对UITableViewCell进行循环使用,而且在UITableView代理方法中,创建了很多并没有什么用的对象,一些调用频繁的方法也没有很好地处理...Paste_Image.png 从iOS7以后,分割线变成了两变都有间距,所以如果要达到一条线贯穿整个cell,那就添加一个View,设置它粘着cell的底部。。...在iOS6之前是可以实现的 ? Paste_Image.png 如果想自定义选中cell的背景颜色:(也可以设置图片,UIImage等等,都可以设置) ?...cell的右边展示例如箭头,加号等 // 设置指示器(灰色小箭头) cell.accessoryType=UITableViewCellAccessoryDisclosureIndicator; 如果想自定义...,例如美工做一个漂亮的指示器图片(当然按钮也是可以的) cell.accessoryView = [[UIImageView alloc] initWithImage:];

80230

TableView优化之高度缓存

iOS开发中,继承是完全可以完成protocol和category的功能的,那么在开发过程中多多使用继承体系可好? 需要注意的是使用继承还有很大的代价问题。...因为我们无法保证或者指定只使用一种cell,很多情况下我们是自定义的cell。...是在IOS6之前用来实现自动布局的属性。当然IOS6之后的autoLayout就要比他强大不少了。 事实上这个属性默认情况下是YES。当为YES时,则我们设置约束是无效的。...//根据辅助视图校正width if (cell.accessoryView) { width -= cell.accessoryView.bounds.size.width...1.先拿到cell的宽度 2.根据辅助视图样式校正宽度 如果有自定义辅助视图,则按照自定义辅助视图的宽度去校正,如果没有按照系统辅助视图样式去校正宽度,然后根据宽度计算高度。

2.4K30

iOS学习——UITableViewCell两种重用方法的区别

直到我在使用方法二进行重用的时候,具体实现代码如下,其中CJMeetingReplyBasicCell是我自定义UITableViewCell类型,但是在运行的时候每次都在调用 CJMeetingReplyBasicCell...UITableViewCellStyleDefault reuseIdentifier:@"BasicCell"]; } return cell; } 一 官网文档解释   首先我们看一下在iOS...源码的UITableView.h中对两者的解释如下,我们可以看到方法二是在iOS 6.0中开始推出的新方法,在对方法二的解释中,我们注意标红的部分的意思是假设我们已经注册了标识符,这里我们猜测可能是我们需要对标识符进行注册...:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(6_0); // newer dequeue method guarantees a cell is returned...这里解释说要先进行注册我们自定义或者通过nib的类和标识符,然后再使用方法二进行重用。所以现在我们崩溃的原因就已经明确了,问题就出在没有进行先注册我们自定义的类和标识符。

1.1K70

swift中UITableView使用.grouped样式时设置cell两侧边距以及实现圆角

iOS13之后苹果为我们提供了新的样式选项.insetGrouped,如果使用这个样式的话,苹果会为我们自动实现每个section的圆角,而且cell两侧有相应的间距。...那么如果要适配iOS13以下的系统呢,我们该怎么实现圆角和边距呢?...我这里使用.grouped样式的UITableView来演示下实现原理:1、先说下实现边距,我们自定义一个cell类,在自定义cell中重写cell的frame属性,在设置frame的时候我们给它设置下想要的边距...- indexPath: indexPath/// - tableView: tableViewprivate func setCornerRadiusForSectionCell(cell: UITableViewCell...func tableView(_ tableView:UITableView,willDisplay cell:UITableViewCell,forRowAt indexPath:IndexPath)

37710

iOS开发中UITableViewCell点击时子视图背景透明的解决方法

iOS开发中UITableViewCell点击时子视图背景透明的解决方法         在做iOS项目的开发中,UITableView控件的应用十分广泛。...在进行自定义UITableViewCell时,经常有小伙伴遇到这样的问题:在UITableViewCell上面添加了一个有背景颜色的子视图,当用户点击UITableViewCell或者选中UITableViewCell...产生这种情况的主要原因是由于UITableViewCell的选中风格所致。...如果开发者不进行设置,UITableViewCell中的selectionStyle属性默认风格为UITableViewCellSelectionStyleBlue。...如果需要使用Cell的选中风格同时又不想让Cell上的子视图收到影响,我们可以继承UITableViewCell后在其中覆写父类的如下两个方法,在这些方法中重新设置子视图的背景色: //这个方法在Cell

1.3K30

iOS UITableView左滑操作功能的实现(iOS8-11)

本文主要是介绍下iOS 11系统及iOS 11之前的系统在实现左滑操作功能上的区别,及如何自定义左滑的标题颜色、字体大小。...二 左滑操作自定义标题颜色、字体 因为系统对左滑出的按钮只提供了3个可设置的属性:title、backgroundColor、image,如果使用自定义的titleColor和font,就需要自己来实现了...考虑到代码的可复用性,自定义左滑操作的字体大小和颜色的代码不写在viewController中,而是写在UITableView和UITableViewCell的Category中,对外提供editActionTitleColor...和editActionTitleFont属性来设置颜色和大小,需要使用自定义颜色和字体时只需要设置一下这两个属性即可。...由上图可知,左滑的操作按钮是在UITableViewCell的子view,所以我们可以在UITableViewCell的category中hook掉layoutSubviews方法,找到UITableViewCellDeleteConfirmationView

1.1K81

老司机 iOS 周报 #77 | 2019-07-29

你可以将此框架与 Create ML 配合使用来训练和部署自定义 NLP 模型。...iOS 13 上此框架更新了新功能 内置情感分析,对文本进行 -1.0 到 1.0 的打分,确定一组文本是积极还是负面。 单词标记,单词应用标记系统,可用于模糊搜索,相似物品推荐系统。...自定义单词嵌入,用于自定义单词标记模型,控制推荐算法。 文本目录,用于将同类型词汇按组标记,建立简单的单词标记模型。...Managing background tasks with the new Task Scheduler in iOS 13 @zvving:iOS 13 中苹果引入 BackgroundTasks...Adapter 说再见 UITableViewCell 自动重用 数据驱动的构建方式 安全的模型视图映射关系 单向绑定 灵活组装 自动高度缓存和简单的高度预计算支持 支持 ListDiff

93030

iOS UITableView左滑操作功能的实现(iOS8-11)

,及如何自定义左滑的标题颜色、字体大小。...二、左滑操作自定义标题颜色、字体 ---------------- 因为系统对左滑出的按钮只提供了3个可设置的属性:title、backgroundColor、image,如果使用自定义的titleColor...考虑到代码的可复用性,自定义左滑操作的字体大小和颜色的代码不写在viewController中,而是写在UITableView和UITableViewCell的Category中,对外提供editActionTitleColor...和editActionTitleFont属性来设置颜色和大小,需要使用自定义颜色和字体时只需要设置一下这两个属性即可。...1、iOS 8-10 设置标题颜色和字体 左滑操作后,UITableView的层级结构如下图: [4.png] 由上图可知,左滑的操作按钮是在UITableViewCell的子view,所以我们可以在UITableViewCell

1.7K80

iOS 10 ~ iOS 15 tableview 适配(使用注意事项)

14 UITableViewCell里面的view无法响应点击 image.png 原因是cell中contentview改为了懒加载,如果添加自定义子view前没有访问.contentview,添加的...addSubview(someView) } 我们在使用时应规范写法:contentView.addSubview /// 规范写法 override init(style: UITableViewCell.CellStyle...return 50 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell...Plain时,如果有设置sectionHeaderView或sectionFooterView并且返回的view为nil,上滑或者下滑时,这两个View都会有颜色的变化,颜色与底色有关,但如果返回的view为自定义的...(设置为0即自动计算高度,设置为非0数值,iOS13.2以下系统顶部有空白,iOS13.2及以上系统顶部无留白)

1.9K20
领券