scrollView中内部控件的悬停

本文介绍了一个在iOS开发中针对ScrollView的实用技巧:如何让特定视图(如红色view)在向上拖动时固定在屏幕顶部,而在向下拖动时跟随滚动。通过调整视图的位置和所属层级,实现了流畅的用户体验。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以下图为例,图片,红色view和蓝色view是添加在scrollView上的,向上拖动,红色view停留在屏幕顶端不动,其它的继续滚动,向下拖动后,红色view跟着下来

代码如下:(注意的是scrollView中自动布局的设置问题)

复制代码
 1 #import "ViewController.h"
 2 @interface ViewController () <UIScrollViewDelegate>
 3 @property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
 4 @property (weak, nonatomic) IBOutlet UIView *blueView;
 5 @property (weak, nonatomic) IBOutlet UIView *redView;
 6 @property (weak, nonatomic) IBOutlet UIImageView *imageView;
 7 @end
 8 @implementation ViewController
 9 - (void)viewDidLoad {
10     [super viewDidLoad];
11     self.scrollView.contentSize = CGSizeMake(0, CGRectGetMaxY(self.blueView.frame));
12 }
13 
14 - (void)scrollViewDidScroll:(UIScrollView *)scrollView
15 {
16     CGFloat imageH = self.imageView.frame.size.height;
17     CGFloat offsetY = scrollView.contentOffset.y;
18     if (offsetY >= imageH) {
19         //将红色控件添加到控制器View中
20         CGRect redFrame = self.redView.frame;
21         redFrame.origin.y = 0;
22         self.redView.frame = redFrame;
23         [self.view addSubview:self.redView];
24     }else {
25         //将红色控件添加到控制器scrollView中
26         CGRect redFrame = self.redView.frame;
27         redFrame.origin.y = 140;
28         self.redView.frame = redFrame;
29         [self.scrollView addSubview:self.redView];
30     }
31     
32 //    if (offsetY < 0) {
33 //        CGFloat scale = 1 - (offsetY / 80);
34 //        self.imageView.transform = CGAffineTransformMakeScale(scale, scale);
35 //    }
36     
37     CGFloat scale = 1 - (offsetY / 20);
38     scale = (scale >= 1) ? scale : 1;
39     self.imageView.transform = CGAffineTransformMakeScale(scale, scale);
40 }
41 @end
复制代码

 

转载于:https://www.cnblogs.com/ritian/p/5470109.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值