ScrollView的自动布局:如何给ScrollView设置contentSize

ScrollView不滚动的原因分析和解决办法 iOS搭建界面时经常用到UIScrollView,但是经常遇到ScrollView不能滚动的问题。 按照一般的解决思路去寻找原因: 1.检测ScrollView的scrollenabled是否为YES; 2.检测ScrollView的userInteractionEnabled是否为YES; 3.检测代码中有没有设置ScrollView的ContentSize,并且比ScrollV... 阅读详情

一、开发环境

XCode11.4,autoLayout。

二、布局目标

如下图,scrollView上面放一个蓝色块和一个绿色块。保持scrollView始终和屏幕等宽高,蓝色和绿色块始终和scrollView等宽,高度随scrollView变化。

二、布局步骤

1、给scrollView添加约束。

相对于view/Safe Area:添加上左下右均为0的约束。

2、对蓝色块添加约束

相对于scrollView:上左右约束均为0。高度为scrollView的0.2倍。

相对于绿色块底部相对绿色块间距20。

注意,一定要点击约束的下拉三角标,选择相对scrollView。

3、给绿色块添加约束。

相对于scrollView:左右约束为0。高度为scrollView的0.3倍。

4、给scrollView设置contentSize。

这是最重要的一步。scrollView的contentSize是由子视图决定的,如何让scrollView有确定的contentSize又保证子视图可以动态宽高。这是最难的部分。

首先:我们要知道autoLayout里面的Content Layout Guide和Frame LayOut Guide是什么东西。

Content Layout Guide:指scrollView的内容区域,相当于scrollView的contentSize。

Frame Layout Guide:指scrollView的边框,相当于scrollView的frame。

所以,要设置scrollView的contentSize,其实就是利用Content Layout Guide和Frame LayOut Guide设置contentSize的宽和高。

对于contentSize的高:其实就是蓝色块和绿色块的高度加上它们的top,bottom。现在高度和top我们都设置好了,就差bottom了。只要让绿色块的bottom与Content Layout Guide的bottom相等就可以确定contentSize的高了。

注意:如果让绿色块的bottom与scrollView的bottom相等并设置一定的constant值也可以确定contentSize的高,但是这样的话这个bottom就写死了。红色块和绿色块无法实现动态高。

对于contentSize的宽:选择其中一个子视图,这里我们选绿色块,相对于Frame LayOut Guide设置左右约束为0即可。

基于RK3562J开发板的MCP2518FD CAN-FD控制器驱动适配与测试指南 本文详细介绍了在RK3562J开发板上适配MCP2518FD CAN-FD控制器驱动的完整流程。内容涵盖内核驱动配置、设备树修改、编译烧录以及实际通信测试,重点分享了调试方法,旨在帮助开发者快速为嵌入式系统扩展高速CAN-FD通信能力,适用于汽车电子、工业控制等场景。 阅读详情

相关推荐

基于TL431与MOSFET的高效过压保护电路设计详解

本文详细解析了基于TL431与MOSFET的高效过压保护电路设计。通过TL431精准监测电压,驱动MOSFET作为主开关,实现快速可靠的电源保护。文章涵盖电路原理、参数计算、性能优化及实战调试要点,为电子设备提供了一套经典且成本低廉的过压保护解决方案。

weixin_29215391的博客 775

scrollview的contentSize

contentSize是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍。 contentOffset是scrol

henry_sea的专栏 9120

动态欧拉角与静态欧拉角:从理论到实践的深度解析

本文深度解析了动态欧拉角与静态欧拉角的核心区别与应用场景。静态欧拉角基于固定世界坐标系,适用于全局导航与三维场景编辑;而动态欧拉角基于物体自身坐标系,更符合飞行模拟、机器人控制等直觉操作,但需警惕其固有的万向节死锁问题。文章通过理论结合实战,帮助开发者在机器人、无人机及图形学项目中正确选用与处理旋转表示。

java5的博客 1074

UIScrollView的Content Size, Content Inset属性

做iOS有好长时间了,今天再次写到UIScrollView的时候再次遇到了ContentSize,ContentInset,Scroll Indicator等属性,想起刚刚入门的时候的困惑,决定把它写下来,做个记录,以后忘记的时候也可以温故知新。也希望给初学者一个好的借鉴,少走点弯路,嘿嘿,不多说了,进入正题,第一次写博客,语言组织可能不太好,如果错误或者说的不准确的地方还望各位大神们多多指正。

我叫柱子哥 1977

Hypack 应用于地形测量的高级设置操作要领

Hypack 是业界公认最好的水文导航测量软件,是目前世界上应用广泛的专业测量疏浚软件。它能够接收,处理,存储和输出各种数据。Hypack支持绝大部分GPS,测深仪(国内如海鹰HY1603单波束测沙仪),多波束测深仪,旁扫声纳,涌浪补偿器,水位仪,验潮仪以及声速剖面仪。利用 Hypack 可以进行导航,单波束测量,多波束测量,旁扫测量以及疏浚实时监测等。软件界面友好,使用方便。本文简要阐述Hypack 应用于地形测量的几个重要操作要领。

中游鱼的博客 2799

用FPGA控制步进电机是种什么体验?从状态机到分频器,详解Verilog驱动A4988全流程

本文详细介绍了如何使用FPGA通过Verilog语言控制步进电机,从状态机设计到A4988驱动模块的精准控制全流程。FPGA的并行处理能力和纳秒级响应速度使其在步进电机控制中展现出显著优势,特别适合工业自动化和精密仪器应用。通过实战代码示例,展示了如何实现高效的状态机设计和可编程分频器,为开发者提供了一套完整的FPGA驱动步进电机解决方案。

weixin_30983965的博客 329

uiscrolView基本使用

1.不显示滚动条 scrollView.showsVerticalScrollIndicator = FALSE;//竖直 scrollView.showsHorizontalScrollIndicator = FALSE;//水平

11月的淡然的博客 304

从Demo到产品:基于ADAU1452的ANC方案,硬件选型、性能优化与避坑指南

本文详细解析了基于ADAU1452的主动降噪(ANC)方案从Demo到产品的实现路径,涵盖硬件选型、性能优化与实战避坑指南。重点探讨了ADAU1452与ADAU1466的性能差异、编解码器选型策略,以及MFXLMS算法优化技巧,为工程师提供从理论验证到量产落地的系统级解决方案。

weixin_30542079的博客 451

ios-day05-01(ScrollView的三个属性:contentSize、contentInset、contentOffset)

源代码下载:http://download.csdn.net/detail/liu537192/8439825 效果图: 核心代码: // // LiuJieViewController.m // 01-大图展示 // // Created by XinYou on 15-2-11. // Copyright (c) 2015年 vxinyou. All

liu537192的专栏 600

STM32G474开发板初步入门与编程实战

STM32G474开发板提供了一种快速评估、原型设计和开发STM32G474应用的方式。它搭载了STM32G474RET6微控制器,配备512KB闪存、128KB RAM,支持各种常见的接口和连接,如USB、I2C、SPI、UART等。板载ST-Link/V2-1调试器/编程器,简化了开发过程。

qq_38334677的博客 4954

Vue2 - 详细实现接入使用海康威视监控云端显示及控制功能,网站集成安装海康监控及实时监控显示、回放、放大缩小画面、视频画面截图、截屏抓拍、摄像头控制,实时推流及播放器解决延迟卡顿等问题(详细代码)

vue2,nuxt2,海康威视,海康监控,摄像头监控,vue对接海康处理接口认证规则,监控实时预览和回放功能,海康api接口,安全认证,海康开放平台,官方文档,播放海康摄像头的监控视频,海康实时监控播放详细步骤,web,黑屏,特别卡不流畅怎么办,解决无法推流,录像,连接不上,vue,海康,vue海康视频监控,海康开放平台,实时监控画面,海康插件,视频播放,回放,视频流地址,取流协议,视频sdk播放,hik,rtsp,rtmp,hls,ws,网站,网页,h5页面,后台管理系统,vue2对接海康监控设备,无法连

🏆 前端领域优质创作者 8245

Xcode11.2 ScrollViews ContentLayout FrameLayout

更新Xcode11.2之后,Xib布局发现ScrollView的布局有些改变。   ContentLayout 和 FrameLayout 介绍 ContentLayout 和 FrameLayout 都继承UILayoutGuide。 UILayoutGuide: LayoutGuide我们在SafeArea的时候都使用过,简单的讲就是一个虚拟矩形,为了方便布局。 Content...

星宇大前端 4064

LSTM+Transformer混合模型时间序列预测实战教学

LSTM+Transformer混合模型时间序列预测实战教学 毕业设计

8219

[开发细节]scrollview自动布局contentsize设置

在自动布局中,一个待显示的视图添加到scrollview,并设置边界为scrollview的四个边。你会发现仅仅这样还不够,这时候待显示视图根本没有显示。 查找了相关资料后发现要额外设置待显示容器的宽高,确定了待显示容器的宽高后再设置靠近scrollview的四个边。 // 真的很有必要系统学习一下自动布局的知识,现在都是在按经验做的。

码农Peter 5154

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

ScrollView的contentSize属性 与 AutoLayout(Masonry布局)

About ScrollView contentSize 与 AutoLayout(Masonry布局)

弄潮者的博客 8781

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

OLEContainerScrollView的KVO实践:监听contentSize变化驱动布局的完整方案

OLEContainerScrollView 是一个智能处理多个子滚动视图的 UIScrollView 容器,它的核心机制正是 KVO(键值观察):持续监听子视图的 contentSize 变化,一旦高度改变就立刻驱动整体重新布局。本文将带你完整拆解这套监听方案——从注册、回调判断到安全移除,以及一个让布局变化带动画的隐藏技巧。 ## 为什么容器布局必须监听 contentSize? 把多个

gitblog_00150的博客 388

scrollview的自动布局约束设置

在自动布局中,scrollview的处理方式要比其他普通view特殊。 由于scrollview出了自身大小外,还需要contentSize来确定内容滚动的大小,所以使用对scrollview的内容作约束的时候,需要要能计算出确切的宽高,最终才能得到contentSize的大小。做法: 1. 添加scrollview到vc.view中,先设置scrollview跟父view的约束一般为top、b

小路恢宏随手记 2409

UIScrollView使用自动布局设置以及contentSize滚动问题

当我们不再使用frame而是用约束去布局界面的时候,UIScrollView或者uitableview就遇到问题了,往里面添加的子控件发现不展示?而如果contentSize是根据UIScrollView里面的控件而决定的时候如何设置contentSize呢? 不管是UIScrollView还是uitableview,它的特殊之处就在于contentSize这个属性,想想我们在手写代码向scrol

凉城旧梦的博客 1万+

Xib 中 给UIScrolleView设置ContentSize

题外话:在初学IOS的时候,我是使用的纯代码布局。刚开始的时候并没有发现哪里不对。后来在实际开发的时候,发现这样纯代码的布局开发效率非常低,而且后期维护的时候时间久了很多代码又要重新再看再理解一遍,很浪费时间。纯代码的布局通常是运用在动态布局或者是一些xib界面很难实现的布局中使用比较好。而大多数的界面基本上都是可以用xib来实现的。这样的界面如果再采用纯代码的方式去构建的话就很浪费时间了,综上,

kenshin的专栏 1万+

告别复杂布局:Masonry让ScrollView适配如此简单

本案例来自Masonry官方示例,完整项目可通过以下地址获取: ```bash git clone https://gitcode.com/gh_mirrors/ma/Masonry ``` 安装Masonry只需在Podfile中添加: ```ruby pod 'Masonry' ``` 建议配合代码片段[CodeSnippets/Masonry Constraint Make.code...

gitblog_00327的博客 401

Masonry + ScrollView 布局小问题

Masonry 去做scrollView的自适应,需要在scrollView上添加一个中间层(UIView )来确定scrollView的contentSize,但是,有可能这个中间层的view是看不见的,就会导致添加上的Button点击没响应的时候不知道Button是不是添加到中间View上,关于中间(View)层不显示的原因,请看这里。 原因简述:UIScrollView的leading/t

Rookie的博客 4348

ScrollView代码布局(SnapKit)带来的困扰

最近在用代码去布局ScrollView时候,出现一些问题,记录下来。 先来看需求:(这里将说的简单下)放两个view,在scrollView上,让其上下滑动,左右不滑动。 因为是记录问题,就把需求简化了,这样下面的会更容易理解和讲解。好了,进入今天的正题。 首要前提: 1.使用代码布局scrollView时,是不能手动设置contentSize,他的contentSize是会自己根据子控件

Asong_ge的博客 6740

参考解决iOS7中scrollView设置了contentSize后仍然不能滑动的问题

在设置scrollView的ContentSize时,iOS7.0的在 -(void)viewDidLayoutSubviews中设置,iOS8.0后在 - (void)viewDidAppear:(BOOL)animated中设置。iOS8.0中使用了自动布局,且对自动布局的constraint进行了修改之后还会再次调用viewDidLayoutSubviews,而iOS7.0则不会调用。

也嘉 2239

UIWebView根据contentSize动态设置UIWebView的高度

第1种: - (void)webViewDidFinishLoad:(UIWebView *)aWebView { CGRect frame = aWebView.frame; frame.size.height = 1; aWebView.frame = frame; CGSize fittingSize = [aWebView sizeThatFits:CGS

crs258的专栏 1541

ScrollView代码设置约束

ScrollView代码设置约束

huangyongf的博客 3076

iOS xib ScrollView的contentSize

xib中的scrollView的contentsize是根据子视图来确定的 scrollView设置占满整个屏幕的时候 子视图要设置好宽度和位置 这样scrollview才能确定其contentSize xib中一般是不用手动设置scrollView的contentSize的 必须要设置 iOS7中重写 -(void)viewDidLayoutSubviews { self.scro

rpf的博客 1444

【iOS(swift)笔记-8】SnapKit布局ScrollView时注意点

// 注意!这里必须要设置子视图(这里是uView)的宽度和高度,而且子视图上下左右边缘要设置和父视图对齐,这样父视图ScrollView的contentSize才会自动得到同等的值。否则只能手动设置,例如 ScrollView.contentSize = CGSize(width: 300, height: 900)        uView.snp.updateConstraints { (m...

xihuandaxiaojie的专栏 1515
上一篇: UITableView分割线不显示
下一篇: vue手势缩放组件
devil_0311
博客等级 码龄10年 13粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值