`
lizhuang
  • 浏览: 904386 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

contentSize、contentInset和contentOffset区别

 
阅读更多
在做一个功能的时候,遇到了这个问题。这里记录一下。

可滚动视图:UIScrollView,UITableView(是UIScrollView的子类)。

如果有的童鞋还是不理解,这个滚动视图,那么引一句网上的说法:

     就像两张重叠在一起的纸,上面的纸中间有个320*480的屏幕状的洞,然后下面的纸可以无限大,显示是内容,你可以将手指通过这张洞来移动下面的纸,来阅读上面的信息。

而contentSize、contentInset和contentOffset 是 scrollView三个基本的属性。

contentSize: The size of the content view. 其实就是scrollview可以滚动的区域,比如frame = (0 ,0 ,320 ,480) contentSize = (320 ,960),代表你的scrollview可以上下滚动,滚动区域为frame大小的两倍。

contentOffset:The point at which the origin of the content view is offset from the origin of the scroll view. 是scrollview当前显示区域顶点相对于frame顶点的偏移量,比如上个例子你拉到最下面,contentoffset就是(0 ,480),也就是y偏移了480

contentInset:The distance that the content view is inset from the enclosing scroll view.是scrollview的contentview的顶点相对于scrollview的位置,例如你的contentInset = (0 ,100),那么你的contentview就是从scrollview的(0 ,100)开始显示

另外UITableView是UIScrollView的子类,它们在上述属性又有所不同,tabelview的contentsize是由它的下列方法共同实现的
- (NSInteger)numberOfSections;
- (NSInteger)numberOfRowsInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section;
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
它会自动计算所有的高度和来做为它的contentsize的height.
分享到:
评论

相关推荐

    swift-基于Ole的Objective-C实现在Swift中进行视差滚动

    2. **配置UIScrollView**:使用UIScrollView作为滚动容器,设置其contentSize以适应所有视图层。同时,为每个视图层添加到ScrollView的subviews。 3. **实现scrollViewDidScroll方法**:在UIViewController的...

    iOS开发之UIScrollView详解

    理解contentSize、contentInset和contentOffset的区别至关重要。contentSize决定了ScrollView的内容区域大小;contentInset是内容区域与ScrollView边界的内边距;而contentOffset则表示当前可视区域在contentView中...

    ScroolView例子

    在实现滚动和缩放功能时,还需要注意一些最佳实践,例如保持ScrollView的contentInset和contentOffset的正确设置,以及在缩放过程中处理好视图的约束,确保视图不会因为缩放而变形或超出ScrollView的边界。...

    喜马拉雅案例完整

    在“喜马拉雅案例完整”这个主题中,我们重点关注`UIScrollView`的`ContentSize`、`ContentOffset`和`ContentInset`属性在实现垂直滚动效果中的应用。以下是关于这些知识点的详细解释: 1. **ContentSize**: `...

    ios-scrollView滚动视图.zip

    可以使用`scrollEnabled`属性来控制各个ScrollView是否允许滚动,或者通过调整contentInset和contentOffset来协调它们之间的关系。 另外,ScrollView的一个常见用途是实现无限滚动,这在新闻、社交媒体等应用中很...

    iphone ipad scrollview

    - ScrollView支持水平和垂直滚动,通过调整contentSize的width和height属性可以控制滚动方向。 - 默认情况下,ScrollView会自动检测内容的大小,但有时可能需要手动设置以达到预期效果。 4. **添加子视图** - ...

    iOS学习——ScrollView图片轮播和同类控件优先级问题-代码

    此外,还要注意处理ScrollView的contentInset和contentOffset,确保图片在滚动时能正确显示。 总之,ScrollView在iOS应用中扮演着重要角色,无论是简单的图片轮播还是复杂的交互设计,都离不开它的支持。通过理解并...

    UIScrollView的简单例子

    scrollView.contentSize = contentView.bounds.size // 设置内容大小 ``` 然后,我们可以添加手势识别器(Gesture Recognizer)来监听用户的触摸事件,实现滚动行为。默认情况下,UIScrollView已经包含了水平和垂直...

    iOS无限轮播功能

    - **调整contentInset和contentOffset**:通过设置`contentInset`,可以控制轮播图的边距,使得首尾的视图部分可见,从而实现无缝过渡。同时,通过调整`contentOffset`,可以在初始化时将视图定位到正确的位置。 -...

    IOS屏幕图片循环切换缩放

    在这个场景中,我们可以在UIScrollView中添加多张图片,通过调整其contentSize来实现水平或垂直方向的滚动。为了使图片可以循环切换,我们需要设置ScrollView的`isPagingEnabled`属性为`true`,这样当用户滑动到边界...

    非常详细的适合初学者学习的UIScrollView

    ScrollView的主要属性包括contentSize、contentOffset和contentInset。contentSize定义了ScrollView内所有子视图的总尺寸;contentOffset表示ScrollView内部内容相对于其内容区域左上角的位置,这通常与用户的滚动...

    高仿iOS11 App Store列表效果

    开发者需要调整橡皮筋效果的参数,比如contentInset、contentOffset和contentSize,来实现自然的滚动感觉。同时,滑动手势识别器允许用户通过手势控制视图的滚动。 其次,转场动画是另一个关键点。“转场动画”通常...

    在autolayout下使用uiscrollview

    1. **内容尺寸**:UIScrollView的内容尺寸(contentSize)不是由其子视图的frame决定的,而是由子视图的约束决定。因此,需要确保所有子视图的约束足以确定内容尺寸。 2. **约束优先级**:为了实现滚动,子视图的...

    swift-iOS开发中实现UILabel滚动类似于跑马灯效果;

    if scrollView.contentOffset.x >= contentSize.width - width { scrollView.contentOffset.x = -contentInset.left } else if scrollView.contentOffset.x <= -contentInset.left { scrollView.contentOffset.x...

    iOS纯手写UI小例子

    配置UIScrollView需要设置contentSize,添加子视图,并可能需要调整contentInset和contentOffset。例如: ```swift let scrollView = UIScrollView() scrollView.contentSize = CGSize(width: view.bounds.width ...

    无限自动滚动广告栏

    我们可以将广告视图添加到UIScrollView的contentSize中,设置适当的contentInset和contentOffset,使其在用户滚动时能够平滑过渡。 4. **自动布局**(Auto Layout):为了适应不同尺寸的设备,我们需要利用Auto ...

    ios 项目广告轮播器

    - **无限轮播**:通过巧妙地设置contentSize和初始contentOffset,可以使用户感觉广告一直在循环播放,而不会看到结束。 - **点击事件处理**:添加手势识别器或监听触摸事件,以便在用户点击广告时执行相应操作,如...

    ios-仿QQ消息拖动效果.zip

    5. **内容 inset 和 content offset**:为了实现消息在屏幕边缘的弹性效果,需要调整ScrollView的contentInset和contentOffset属性。这使得用户在接近列表顶部或底部时,能感觉到内容有继续滑动的可能,从而提供一种...

    UIScrollView霸气代码演示

    - 内容大小(contentSize):设置`contentSize`属性,确定可滚动的区域大小。这应大于ScrollView的frame大小,以便有滚动效果。 - 内容偏移(contentOffset):ScrollView显示的内容位置,可以通过修改`...

    ios-scrollerView适配.zip

    3. **子视图布局**:在UIScrollView中添加子视图时,需要注意它们的位置和尺寸应相对于整个contentSize,而非scrollView本身的frame。通常,我们需要根据内容来动态调整contentSize。 4. **自动布局AutoLayout**:...

Global site tag (gtag.js) - Google Analytics