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

iOS - subivew不能在UITableViewCell中居中

在iOS开发中,UITableViewCell是用于在UITableView中显示数据的视图单元。subview是UITableViewCell中的子视图,可以用于显示额外的内容或自定义布局。

在UITableViewCell中,subview默认是按照其在父视图中的位置进行布局的。如果想要将subview居中显示,可以通过以下步骤实现:

  1. 创建一个自定义的UITableViewCell子类,例如CustomTableViewCell。
  2. 在CustomTableViewCell的初始化方法中,设置subview的布局约束或frame,将其居中显示。可以使用Auto Layout或手动设置frame来实现居中布局。
  3. 在UITableView的数据源方法中,使用CustomTableViewCell来显示数据。

以下是一个示例代码:

代码语言:swift
复制
class CustomTableViewCell: UITableViewCell {
    var customSubview: UIView!
    
    override init(style: UITableViewCell.CellStyle, reuseIdentifier: String?) {
        super.init(style: style, reuseIdentifier: reuseIdentifier)
        
        // 创建自定义的subview
        customSubview = UIView()
        customSubview.backgroundColor = UIColor.red
        
        // 添加subview到cell中
        addSubview(customSubview)
        
        // 使用Auto Layout设置subview居中
        customSubview.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            customSubview.centerXAnchor.constraint(equalTo: centerXAnchor),
            customSubview.centerYAnchor.constraint(equalTo: centerYAnchor),
            customSubview.widthAnchor.constraint(equalToConstant: 100),
            customSubview.heightAnchor.constraint(equalToConstant: 100)
        ])
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}

// 在UITableView的数据源方法中使用CustomTableViewCell
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "CustomCell", for: indexPath) as! CustomTableViewCell
    
    // 设置cell的数据
    
    return cell
}

这样,customSubview就会在UITableViewCell中居中显示。

对于这个问题,腾讯云提供了一系列的移动开发相关产品和服务,例如:

以上是腾讯云在移动开发领域的一些产品和服务,可以根据具体需求选择适合的产品来支持移动应用的开发和运营。

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

相关·内容

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

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

1.3K30

iOS14适配【解决UITableViewCell兼容问题(往cell添加子视图的方式规范)】

cell.subviews 2.2.2 通过superview 获取cell的也需做相关修改 2.1 全局修改 2.2 注意事项 2.3 使用到的工具类 see also 前言 今天升级最新IDE Xcode,准备适配iOS14...API,结果发现app首页的cell按钮也无法点击了。...I、问题分析 iOS14 UITableViewCell的子试图不能点击或者滑动等手势响应问题,发现有问题的cell基本都是直接 cell.addSubView(tempView1) 这种方式添加的,通过...(但是苹果迟早会限制高于Xcode12才可以上传appstore,所以一旦使用了规范的代码,早晚都要面临这个问题) 1.0 其他分析视图层级的方法:私有API _printHierarchy 和recursiveDescription...All rights reserved. // #import "UITableViewCell+CRMaddSubView.h" @implementation UITableViewCell (

2.5K20

关于拖拽功能在IE11 、Firefox和Safari兼容的问题

firebox) 3是firefox在拖动的时候会打开一个新窗口 (firbox) 4是ie11不支持onclick属性方法 ; ie11 里元素对象的attributes的排序和其他浏览器不同, ie11 ...remove()方法work (ie) 对于原因1的解决方案 其中IE11 压根就不支持path属性,firefox和Safari还勉强通过hack的方式获取到path,获取方式如下: const...addEventListener('click', function () {}) 如果你的业务代码里包含 获取对象attributes的值的代码,比如 event.target.attributes[n].xxx 在ie11attributes...解决这个问题 ,我是通过遍历attributes 找到符合我要的代替之前的写死的attributes顺序 针对ie11 remove()work的情况,可以用代码 parent.removeChild

3.2K30

iOS 设置tableViewCell的高度

前言 iOS tableView的cell在显示之前必须获取cell的高度,如果cell的高度都一样,统一设置就行了,但是cell的高度统一的话就要一一设置了,在ios8之前,需要自己手动去计算,iOS...之后就方便多了 iOS8以下(包含iOS8) 定义全局变量 //用于缓存计算高度的cell var offscreenCells:[String:AnyObject] = [:]; 保存计算高度的Cell...以上(包含iOS8) 添加一下两个属性就行了 self.tableView.estimatedRowHeight = 44.0; self.tableView.rowHeight = UITableViewAutomaticDimension...heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat { return 50; } 坑 这样做有一个坑 在网上找了好久没找到解决方法,试了好久终于找到了解决方法 假如UITableViewCell...中就放一个view 设置该view以下约束 宽度和高度(假设为宽100 高100) 水平居中 距离顶部距离(=10) 距离底部距离(>=10) 这样设置之后UITableViewAutomaticDimension

2.3K30

IOS开发系列——UIView专题之三:自定义绘制篇【整理,部分原创】

3UIView重绘机制 3.1DrawRect机制 3.1.1简介 iOS的绘图操作是在UIView类的drawRect方法完成的,所以如果我们要想在一个UIView绘图,需要写一个扩展UIView...重绘操作仍然在drawRect方法完成,但是苹果建议直接调用drawRect方法,当然如果你强直直接调用此方法,当然是没有效果的。...以上1,2推荐;而3,4不提倡 1、若使用UIView绘图,只能在drawRect:方法获取相应的contextRef并绘图。...2、若使用calayer绘图,只能在drawInContext:(类似鱼drawRect)绘制,或者在delegate的相应方法绘制。...3.2使用技巧 3.2.1UITableViewCell中使用DrawRect 不能在UITableViewCell中直接使用DrawRect方法,应该在ContentView增加一个子View,

1K30

iOS开发-搜索栏UISearchBar和UISearchController

最近项目中用到了搜索栏,所以在网上搜了一些相关的资料学习了一下,现在记录一下,iOS的搜索栏实现起来相对简单一点,网上也有很多参考资料,不过靠谱的不是很多,很多都是iOS 8.0之前的实现,iOS...*cell=[tableView dequeueReusableCellWithIdentifier:flag]; if (cell==nil) { cell=[[UITableViewCell...实现上面的效果是没有问题的,网上也有很多类似的实现效果,不过是警告的,信息如下: 'searchDisplayController' is deprecated: first deprecated in iOS...8.0,这么明显一个警告总不能视而不见吧 ,也就是说 iOS 8.0 推荐 UISearchDisplayController, 也就是推荐使用 UISearchDisplayDelegate ,...但是可以通过 UISearchController 实现 UISearchResultsUpdating 这个委托实现上面的效果; 视图中需要声明UISearchResultsUpdating:

2.3K70

iOS小技能: 解决UITableViewCell兼容问题(iOS14适配)

前言 问题:升级最新IDE Xcode,发现app首页的cell按钮也无法点击了。...原因:往cell添加子视图的方式规范,导致contentView 置于自定义控件的上层,引发界面无响应(注意处理相关方法) I 问题分析 iOS14 UITableViewCell的子试图不能点击或者滑动等手势响应问题...UIPrintOptionCell的contentView是UIListContentView 解决方式:如果子类名称包含ContentView就不处理,包含ContentView才将其添加到cell...3.2 iOS 恢复调用栈(适配iOS14) 原理:objective-c 函数信息除了保存在符号表,还保存在其他段 https://github.com/zhangkn/restore-symbol4iOS14...func ios14Bug() { let sel1 = #selector(UITableViewCell.runtime_addSubview(_:))

1.3K30

UITableView性能优化-中级篇

下的任务会被暂停,停止滚动的时候 ==> 进入defaultMode - 继续执行defaultMode下的任务 - 例如这里的defaultMode 大tips:这里,如果使用RunLoop,滚动的时候虽然执行...-)iOS本来就是提前进入寒冬,iOS小白们可以尝试思考下这个问题 问:UITableView的圆角性能优化如何实现 答: 让服务器直接传圆角图片; 贝塞尔切割控件layer; YYWebImage为例...在下载完成的回调?如果你在下载完成的时候再切割,此时 YYWebImage 缓存的图片是初始图片,还是圆角图片?(终于等到3了!!)...无需修改源码 “winner is coming”,如果面试正好遇到以上问题的,请叫我雷锋~ 衷心希望各位iOS小伙伴门能熬过这个冬天?...Demo源码 ---- 参考资料 iOS 保持界面流畅的技巧 VVeboTableViewDemo YYKitDemo UIScrollView 实践经验

1.5K20

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

14 UITableViewCell里面的view无法响应点击 image.png 原因是cellcontentview改为了懒加载,如果添加自定义子view前没有访问.contentview,添加的...addSubview(someView) } 我们在使用时应规范写法:contentView.addSubview /// 规范写法 override init(style: UITableViewCell.CellStyle...return 50 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell...wikcnv5UZ2xk1kVoOtCZDmqSHRd#doxcn2smYAy8GwAyyKCqfewTKi9 注:不实现viewForHeaderInSection,实现heightForHeaderInSection并返回非0高度生效的原因是...(设置为0即自动计算高度,设置为非0数值,iOS13.2以下系统顶部有空白,iOS13.2及以上系统顶部无留白)

1.9K20

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

在2和3,如果是需要适配iOS 11之前的版本,以上三个方法都需要实现。...4、上面1.2和1.3实现的方法的区别 体验上的不同就是当左滑只有一个button时,iOS 11可以一直左滑,滑到一定程度时,会执行点击按钮的操作,iOS 11之前的不会。...实现的思想是hook系统实现,但鉴于UITableView的view层级结构在iOS 11有所改变,所以iOS8-10和iOS11的实现有所不同,以下分别给出。...考虑到代码的可复用性,自定义左滑操作的字体大小和颜色的代码写在viewController,而是写在UITableView和UITableViewCell的Category,对外提供editActionTitleColor...由上图可知,左滑的操作按钮是在UITableViewCell的子view,所以我们可以在UITableViewCell的categoryhook掉layoutSubviews方法,找到UITableViewCellDeleteConfirmationView

1.1K81

iOS核心机制之一:UITableView的Cell重用机制1 传统重用机制2. 注册机制的重用3. 注册cell的三种方式4. 调试小技巧之检测异常断点

附送小白们的调试小技巧& 在末尾 虽然iOS本身已经做过优化了,在tableView并不会真正的开辟很多空间,会让空间复用。...注册机制的重用 从iOS6.0开始,添加了缓存池的优化用法。 先去缓存池中找,是否有可以重用的cell 如果缓存池中没有,会按照提前注册的方式自动创建一个cell 设置数据 3....)registerClass:(nullable Class)cellClass forCellReuseIdentifier:(NSString *)identifier NS_AVAILABLE_IOS...(6_0); 如果要想更多的样式,就建立一个UITableViewCell子类,然后重新这个方法。...Paste_Image.png 优点: 让每次报错不在主程序,直接在错误行报错。

1.3K30

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

那么,这两种重用UITableViewCell的方法之间到底有什么区别呢?...//方法一 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; //方法二 UITableViewCell...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

1.1K70

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

在2和3,如果是需要适配iOS 11之前的版本,以上三个方法都需要实现。...4、上面1.2和1.3实现的方法的区别 体验上的不同就是当左滑只有一个button时,iOS 11可以一直左滑,滑到一定程度时,会执行点击按钮的操作,iOS 11之前的不会。...实现的思想是hook系统实现,但鉴于UITableView的view层级结构在iOS 11有所改变,所以iOS8-10和iOS11的实现有所不同,以下分别给出。...考虑到代码的可复用性,自定义左滑操作的字体大小和颜色的代码写在viewController,而是写在UITableView和UITableViewCell的Category,对外提供editActionTitleColor...1、iOS 8-10 设置标题颜色和字体 左滑操作后,UITableView的层级结构如下图: [4.png] 由上图可知,左滑的操作按钮是在UITableViewCell的子view,所以我们可以在UITableViewCell

1.7K80

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

在2和3,如果是需要适配iOS 11之前的版本,以上三个方法都需要实现。...4、上面1.2和1.3实现的方法的区别 体验上的不同就是当左滑只有一个button时,iOS 11可以一直左滑,滑到一定程度时,会执行点击按钮的操作,iOS 11之前的不会。...实现的思想是hook系统实现,但鉴于UITableView的view层级结构在iOS 11有所改变,所以iOS8-10和iOS11的实现有所不同,以下分别给出。...考虑到代码的可复用性,自定义左滑操作的字体大小和颜色的代码写在viewController,而是写在UITableView和UITableViewCell的Category,对外提供editActionTitleColor...由上图可知,左滑的操作按钮是在UITableViewCell的子view,所以我们可以在UITableViewCell的categoryhook掉layoutSubviews方法,找到UITableViewCellDeleteConfirmationView

59140
领券