控件悬停

#import "ViewController.h"

@interface ViewController () <UIScrollViewDelegate>
/** 价格view */
@property (nonatomic, weak) UIView *priceView;
@property (weak, nonatomic) IBOutlet UISwitch *s;
@end

@implementation ViewController

static CGFloat const XMGImageH = 100;

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 滚动
    UIScrollView *scrollView = [[UIScrollView alloc] init];
    scrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, 400);
    scrollView.backgroundColor = [UIColor redColor];
    scrollView.contentSize = CGSizeMake(0, 600);
    scrollView.delegate = self;
    [self.view addSubview:scrollView];
    
    // 图片
    UIImageView *imageView = [[UIImageView alloc] init];
    imageView.frame = CGRectMake(0, 0, self.view.frame.size.width, XMGImageH);
    imageView.backgroundColor = [UIColor greenColor];
    [scrollView addSubview:imageView];
    
    // 需要悬停的控件
    UIView *priceView = [[UIView alloc] init];
    priceView.frame = CGRectMake(0, XMGImageH, self.view.frame.size.width, 40);
    priceView.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.5];
    [scrollView addSubview:priceView];
    self.priceView = priceView;
    
    UIView *otherView = [[UIView alloc] init];
    otherView.frame = CGRectMake(0, 140, self.view.frame.size.width, 40);
    otherView.backgroundColor = [UIColor yellowColor];
    //[scrollView addSubview:otherView];
}

#pragma mark - <UIScrollViewDelegate>
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (scrollView.contentOffset.y >= XMGImageH) {
        CGRect priceF = self.priceView.frame;
        priceF.origin = CGPointZero;
        self.priceView.frame = priceF;
        
        [self.view addSubview:self.priceView];
        
        // 往上移动多少距离, 开关就完全透明
        CGFloat maxDelta = 20;
        
        // 往上移动的距离
        CGFloat delta = scrollView.contentOffset.y - XMGImageH;
        
        // 减小alpha
        self.s.alpha =  1 - delta / maxDelta;
    } else {
        CGRect priceF = self.priceView.frame;
        priceF.origin.y = XMGImageH;
        self.priceView.frame = priceF;
        
        [scrollView addSubview:self.priceView];
    }
}
@end
原文地址:https://www.cnblogs.com/developer-ios/p/4934762.html