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

如何在不使用ios中的AutolayOut的情况下使UITableView高度动态到特定的高度,然后允许滚动

在不使用iOS中的Autolayout的情况下,可以通过以下步骤使UITableView的高度动态到特定的高度,并允许滚动:

  1. 首先,需要在视图控制器中创建一个UITableView的实例,并设置其数据源和代理。
  2. 在视图控制器中,创建一个变量来保存UITableView的高度。例如,可以声明一个名为tableHeight的CGFloat变量。
  3. 在视图加载完成后的方法(如viewDidLoad)中,设置UITableView的frame属性,将其高度设置为tableHeight。
  4. 在UITableView的数据源方法中,根据数据源的内容计算出UITableView的实际高度,并将其赋值给tableHeight变量。
  5. 在数据源方法中,返回正确的行数和单元格内容。
  6. 如果UITableView的高度超过了特定的高度,可以将其滚动启用,以便用户可以滚动查看所有内容。可以通过设置UITableView的scrollEnabled属性为true来实现。

以下是一个示例代码:

代码语言:txt
复制
import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
    var tableView: UITableView!
    var tableHeight: CGFloat = 0
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        // 创建UITableView实例
        tableView = UITableView(frame: CGRect(x: 0, y: 0, width: view.frame.width, height: tableHeight))
        tableView.dataSource = self
        tableView.delegate = self
        
        // 添加UITableView到视图中
        view.addSubview(tableView)
    }
    
    // 计算UITableView的实际高度
    func calculateTableHeight() {
        // 根据数据源内容计算高度
        // 例如,可以根据行数和每行的高度计算
        let numberOfRows = 10
        let rowHeight: CGFloat = 44
        tableHeight = CGFloat(numberOfRows) * rowHeight
        
        // 更新UITableView的frame
        tableView.frame = CGRect(x: 0, y: 0, width: view.frame.width, height: tableHeight)
    }
    
    // UITableViewDataSource方法
    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return 10
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell = UITableViewCell(style: .default, reuseIdentifier: "Cell")
        cell.textLabel?.text = "Row \(indexPath.row)"
        return cell
    }
    
    // UITableViewDelegate方法
    func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
        return 44
    }
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        
        // 在视图显示后计算UITableView的实际高度
        calculateTableHeight()
    }
}

这样,UITableView的高度将根据数据源的内容动态调整到特定的高度,并且可以滚动查看所有内容。

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

相关·内容

有了Auto Layout,为什么你还是害怕写UITabelView自适应布局?

Apple 算是最重视应用开发体验公司了.从XibStoryBoard,从Auto LayoutSize Class,每一次更新,都会给iOS应用开发带来不小便利.但是,对于绝对多数iOS攻城狮来说...,根据数量动态计算高度;转发部分同理;然后根据数据在tabelView代理方法 tableView:heightForRowAtIndexPath: 动态返回高度即可.是的,思路就是这么个思路,但是你确定产品经理一直不会改需求....由于浮点数四舍五入机制存在,所以偶现UILabel最后一行无法显示情况.原因也很诡异: 在你计算时,部分值会存在稍许超过0.01误差,大多数情况下,这个误差值,可以安全忽略,但是确实存在那0.01...,然后计算cell高度.然后你会发现,凡是稍微涉及图片显示界面,你显示是对,但是滚动非常卡顿,因为你在自己浑然不觉情况下创建了N个Cell,而且这些Cell绝对不会参与复用....Masonry — 使用纯代码进行iOS应用autolayout自适应布局 2.使用 UITableView-FDTemplateLayoutCell 根据单元格内容约束自适应单元格高度 ?

84560

iOS开发中行高灵活可变UITableView性能优化

iOS开发中行高灵活可变UITableView性能优化 一、UITableView构建原理         在新闻类,电商类等应用,应用着大量图文混排视图,在表视图UITableView,...在开发通常会遇到一些十分复杂界面,而这些界面cell高度都是需要通过请求数据动态改变,每个cell都要写复杂尺寸计算代码十分令人心烦。...那么现在问题来了,如何才能让cell正确计算自己高度,这就要使用Autolayout了,无论是通过xib文件创建cell还是代码创建cell,若想让cell自动正确计算出自身高度,必须添加足够压力约束...关于细节方面,还有一个问题需要注意,预估行高会影响TableView右侧滚动展现,如果每个cell行高跳跃跨度十分大,滚动条宽度配置会失准,随着用户滑动表视图,右侧滚动条可能会出现长短跳跃情况...三、关于高度不定UITableView分区头尾视图         一般情况下,TableView分区头尾视图高度都是固定,因此一般不需要考虑计算分区头尾视图高度产生性能问题,类比如cell布局原理

1.9K20

浅汇-iOS UI布局

iOSUI布局是很重要,而在前期开发中就要选定好布局方法,因为这对整个工程乃至于后期版本维护都有很重要影响。...本文从比较老Frame新生AutoLayout都进行了浅显总结,希望对大家UI布局学习有所帮助 ---- Frame 父试图是使用AutoLayout  ,如果子试图Frame  = supeView.Frame...2、实现了UIView内子视图自动布局; 3、实现了UIScrollView内容高度根据内部子视图内容高度动态设置; 4、实现了一个UITableView有多个不同Cell时候,所有cell高度自适应...实现了UIScrollView可滚动高度根据内部子视图内容高度动态设置 /** 设置scrollview内容自适应,第一个参数为作为底部子视图,第二个参数为sc底部间距。...` ---- 小结  iOS关于UI布局知识还有很多,至此我列举了一些需要注意地方,使用时候是先初始化`new`比较方便,先加载到父视图上后设置相关属性,然后再进行布局方面的设置,若后加到父试图上

2.1K20

MyLayout&TangramKit 重大升级!

比如一些界面中有父视图尺寸由子视图尺寸来确定;还比如UIScrollView为了能实现滚动需要根据添加到里面的子视图来调整contentSize尺寸;又比如某些UITableViewCell高度动态...//本文对AutoLayout进行约束设置都是用iOS9以后所提供进行约束设置简易方法。...3.UITableViewCell高度自适应 UITableViewCell要实现高度自适应,需要在UITableViewDelegate方法: -(CGFloat)tableView:(UITableView...所有为子视图设置约束都必须放入一个布局视图中才有效。整个布局框架提供了多种布局视图,每种布局视图中子视图都将按照特定规则进行排列和布局。...UITableViewCell高度自适应 UITableViewCell要实现高度自适应,需要在UITableViewDelegate方法: -(CGFloat)tableView:(UITableView

2K20

AsyncDisplayKit 2.0 教程:入门「译」

对象生命周期:创建,操纵和销毁系统对象(即创建一个UIView) 当正确使用时,AsyncDisplayKit 允许您在默认情况下异步执行所有测量、布局和渲染。...免责声明:ASDK兼容 Interface Builder和AutoLayout,因此,您将不会在本教程中使用它们,虽然ASDK完全支持Swift(除了ComponentKit),许多开发者仍在使用...在下面的章节,我们将遵循这些协议,使我们能够使用 tableNode 功能。...你可以选择为单元格定义最小和最大尺寸,而不是提供静态高度。这种情况下,你希望每个cell高度至少为屏幕 2/3。 现在不用担心太多,这个会在第二部分中介绍。...现在,你就需要考虑如何在两个方向上动态加载内容。同时,还要对每个设备进行优化。 还记得告诉你 ASRangeController 是不重要吗?现在,这将是我们重点。

2.1K20

Ios常用第三方框架(一)

MJRefresh - 仅需一行代码就可以为UITableView或者CollectionView加上下拉刷新或者上拉刷新功能。可以自定义上下拉刷新文字说明。具体使用看“使用方法”。...AutoLayout Masonry - Masonry是一个轻量级布局框架,拥有自己描述语法,采用更优雅链式语法封装自动布局,简洁明了并具有高可读性(使用介绍1使用介绍2),iOS自适应前段库...UIView-FDCollapsibleConstraints - 一个AutoLayout辅助工具,最优雅方式解决自动布局中子View动态显示和隐藏问题。...SDAutoLayout - AutoLayout 一行代码搞定自动布局!支持Cell、Label和Tableview高度自适应,致力于做最简单易用AutoLayout库。...AutocompleteField - 可应用于 iOS 应用中文字输入框自动补全场景, 兼容 iOS 8。

5.4K31

Ios常用第三方框架(二)

图表 PNChart - 国内开源作者,动态图表。 swift-linechart - 功能完整、实用折线图组件。使用方便,参数配置简单。是不可多得优质组件--swift。...比如,之前要实现一个填写各种资料列表,可能需要很多代码,现在只需要几行代码就可以实现。 UIScrollSlidingPages - 允许添加多视图控件,并且可以横向滚动。...HorizontalScrollCell - HorizontalScrollCell是一款使用方便水平方向可滚动单元格,适用于UICollectionView实现水片方向滚动视图。 。...QuickRearrangeTableView - 基于 UITableView 快速重排功能扩展子类。通过长按选定单元格然后滚动移动到指定位置。...微博cell自动布局 - 使用autoLayout对微博cell进行自动布局,自适应cell高度

7.6K60

iOS自动布局框架之Masonry

在项目中设置AutoLayout约束,起到对视图布局标记作用。设置好约束之后,程序运行过程创建视图时,会根据设置好约束计算frame,并渲染视图上。...和上面的区别在于,一个代表某个坐标系对象,一个用来获取坐标系对象值 说明:上面例如equalTo或者width这样,有时候需要涉及使用mas_前缀,这在开发需要注意作区分。...动态Cell高度iOS UI开发过程UITableView动态Cell高度一直都是个问题。...实现这样需求,实现方式有很多种,只是实现起来复杂程度和性能区别。在不考虑性能情况下,tableView动态Cell高度,可以采取估算高度方式。...需要设置tableViewrowHeight属性,这里设置为自动高度,告诉系统Cell高度固定,需要系统帮我们进行计算。

1.1K60

UITableView图文混排自动布局滑动优化实战

AutoLayout和手动计算高度 毫无疑问,使用AutoLayout会明显比手动计算高度慢,那么我为什么要用AutoLayout呢,因为实在太方便了,而且视图太复杂,产品改太频繁,手动计算实在工作量太大...方案 1.缓存高度 既然手动计算高度更快,那就在Reuse时候用AutoLayout帮我们算过后高度就行了,缓存一个高度字典(或者数组),在算完渲染出来时候取高度,在取高度时候做个判断就行。...[imageView stopAnimating]; } 3.预加载 预加载分为两种,一种是图片预加载,另一种是内容预加载,先说内容预加载,其实就是在指定滚动到第几个cell时候开始分页请求,这样用户就会无感知开开心心刷刷刷了...]; 会自动创建网络请求下载图片,下载完存入内存和本地缓存里,下次使用直接使用sd_setImageWithUrl会自动去内存里寻找下载完图片。...UIImageView上,就会导致UI线程阻塞,用户就感觉卡顿了。

1.2K10

iOS自动布局框架之Masonry

在项目中设置AutoLayout约束,起到对视图布局标记作用。设置好约束之后,程序运行过程创建视图时,会根据设置好约束计算frame,并渲染视图上。...和上面的区别在于,一个代表某个坐标系对象,一个用来获取坐标系对象值 说明:上面例如equalTo或者width这样,有时候需要涉及使用mas前缀,这在开发需要注意作区分。...动态Cell高度iOS UI开发过程UITableView动态Cell高度一直都是个问题。...实现这样需求,实现方式有很多种,只是实现起来复杂程度和性能区别。在不考虑性能情况下,tableView动态Cell高度,可以采取估算高度方式。...需要设置tableViewrowHeight属性,这里设置为自动高度,告诉系统Cell高度固定,需要系统帮我们进行计算。

2K50

IOS学习——iphone X适配

项目中是纯代码布局,使用AutoLayout框架Masonry进行布局),这一块问题很少,也很简单,改变一下相对位置值看看效果就ok。...UISearchBar高度有变化,而且点击之后背景颜色和原先不一致    上图右边图是点击搜索框之前和点击结束输入后正常情况下效果,左边图是iOS 11下点击点击结束输入后效果。...UITableviewheader高度变大,有的地方会出现空白cell格   iOS 11UITableview改变也是蛮大,原本automaticallyAdjustsScrollViewInsets...竟然过期了,在IOS 11下 APPLE推荐使用UIScrollViewcontentInsetAdjustmentBehavior属性进行设置自动计算滚动视图内容边距。 ...,加上导航栏高度变化和safeArea概念提出,使得UITableviewiOS 11布局上会出现一些偏差,因为涉及项目信息,所以就不放图了。

1.4K60

android

在项目中设置AutoLayout约束,起到对视图布局标记作用。设置好约束之后,程序运行过程创建视图时,会根据设置好约束计算frame,并渲染视图上。...所以在纯代码情况下,视图设置约束是否正确,要以运行之后显示结果和打印log为准。 Masonry坑 在使用Masonry进行约束时,有一些是需要注意。...动态Cell高度iOS UI开发过程UITableView动态Cell高度一直都是个问题。...实现这样需求,实现方式有很多种,只是实现起来复杂程度和性能区别。 在不考虑性能情况下,tableView动态Cell高度,可以采取估算高度方式。...实现方式: 需要设置tableViewrowHeight属性,这里设置为自动高度,告诉系统Cell高度固定,需要系统帮我们进行计算。

70420

2018 - iOS 面试题汇总一般面试题BAT面试题

讲 讲你使 场景以及使注意事项 1.给扩展添加属性 2.替换系统方法实现 22.讲讲iOS事件响应链原理 1、响应者链通常是由视图(UIView)构成; 2、一个视图下一个响应者是它视图控制器...动态计算高度问题,都有哪些方案 1、你Cell要使用AutoLayout来布局约束这是必须; 设置tableviewestimatedRowHeight为一个非零值,这个属性是设置一个预估高度值...NSURLProtocol是做什么 1.下载 NSURLConnection下载文件时,先是将整个文件下载到内存,然后再写入沙盒,如果文件比较大,就会出现内存暴涨情况。...为这种属性设置新值得时,设置方法既不保留新值,也释放旧值。此特性同assign类似,然后在属性所指对象遭到摧毁时,属性值也会清空(nil out)。 弱引用,决定对象存亡。...系统会获取dyld路径,并加载。加载程序依赖库。调用所有的+ load方法,并返回main函数地址。

6.4K30

TableView优化之高度缓存

iOS开发,继承是完全可以完成protocol和category功能,那么在开发过程多多使用继承体系可好? 需要注意使用继承还有很大代价问题。...= 本例我们用runtime做了些什么呢? 使用runtime动态为category绑定属性 之前老司机说过,category是不能添加属性。...因为我们无法保证或者指定只使用一种cell,很多情况下我们是自定义cell。...当然IOS6之后autoLayout就要比他强大不少了。 事实上这个属性默认情况下是YES。当为YES时,则我们设置约束是无效。...3.然后如果是使用autoLayout进行自适应计算。 这个也是老司机为之后留下接口,可以控制是否进行一autoLayout进行计算。但实际并没有处理。

2.4K30

你可能需要为你 APP 适配 iOS11

4、UINavigationController和滚动交互 滚动时候,以下交互操作都是由UINavigationController负责调动: 所以,如果你使用navigation bar,组装push...; ③ 通过约束关联你子视图; 二、管理margins 和 insets 1、layout margins 基于约束Auto Layout,使我们搭建能够动态响应内部和外部变化用户界面。...: 2、Table Views :在iOS 11默认启用Self-Sizing 这个应该是UITableView最大改变。...在测试Demo,创建tableView显示出来过程,contentSize计算过程如下图: Self-Sizing在iOS11下是默认开启,Headers, footers, and cells...我写demo测试时候,因为每个cell高度都较小,所以只显示image,然后我增加cell高度后,就可以同时显示image和title了。

2.4K00

你可能需要为你 APP 适配 iOS 11

管理margins 和 insets layout margins 基于约束Auto Layout,使我们搭建能够动态响应内部和外部变化用户界面。...UIScrollView and UITableView新特性 Scroll Views 如果有一些文本位于UI滚动视图内部,并包含在导航控制器,现在一般navigationContollers会传入一个...在测试Demo,创建tableView显示出来过程,contentSize计算过程如下图: ?...Table Views 和 Safe Area 有以下几点需要注意: separatorInset 被自动地关联 safe area insets,因此,默认情况下,表视图整个内容避免了其根视图控制器安全区域插入...我写demo测试时候,因为每个cell高度都较小,所以只显示image,然后我增加cell高度后,就可以同时显示image和title了。见下图对比: ?

1.6K60

iOS 面试策略之系统框架-UIScrollView及其子类

如何定制不同 Cell UI、如何与用户交互、如何与服务器端数据同步、如何在滑动时最大限度保证界面的流畅,这些都是考察要点,是一个 iOS 工程师必备基本技能。...所以我们将同一类型 UITableViewCell 标记为相同 Identifier,然后用reuseIdentifier 去进行构建,配合不同内容进行批量使用。...关键词:#UICollectionViewLayout 面试当场实现一个瀑布流,在不允许上网查询情况下算是十分困难了。而且代码量很大,所以我们这道题重在分析思路。...由于我们在 prepare() 已经完成相应计算,此时只需返回对应 indexPath 特定属性即可。...为了避免循环引用,最好方法就是在我们 UICollectionViewLayout 子类定义一个 protocol,然后让 ViewController 实现这个protocol,来完成高度获得

2.6K21
领券