AutoAdaptationScrollView能够适应自动内容大小的ScrollView

分享个能够自动适应大小的ScrollView 


下面贴下适应的代码

ViewController.m

#import "ViewController.h"
#import "AutoAdaptationScrollView.h"


@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    
    
    AutoAdaptationScrollView *autoSizeView = [[AutoAdaptationScrollView alloc] init];
    // 设置ScrollView的方向
    autoSizeView.directionType = AutoAdaptationScrollViewPortrait;
    
    autoSizeView.frame = CGRectMake(0, 50, self.view.frame.size.width, self.view.frame.size.height - 50);
    autoSizeView.backgroundColor = [UIColor grayColor];
    [self.view addSubview:autoSizeView];
    
    
    // 内容的View
    UIView *contentView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(autoSizeView.frame), 900)];
    [autoSizeView addSubview:contentView];
    
    
    //子视图1
    UIView *AView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, CGRectGetWidth(autoSizeView.frame), 370)];
    AView.backgroundColor = [UIColor blueColor];
    [contentView addSubview:AView];

    //子视图1
    UIView *BView = [[UIView alloc] initWithFrame:CGRectMake(0, CGRectGetMaxY(AView.frame), CGRectGetWidth(autoSizeView.frame), 370)];
    BView.backgroundColor = [UIColor greenColor];
    [contentView addSubview:BView];
    //让ScrollView的大小适应内容视图
    [autoSizeView autoAdaptationWithView:contentView];
    
    
}

AutoAdaptationScrollView.h

#import <UIKit/UIKit.h>


typedef enum
{
    AutoAdaptationScrollViewPortrait,
    AutoAdaptationScrollViewLandscape
}AutoAdaptationScrollViewDirection;



@interface AutoAdaptationScrollView : UIScrollView

@property (nonatomic , assign) AutoAdaptationScrollViewDirection directionType;

- (void)autoAdaptationWithView:(UIView *)view;


@end
AutoAdaptationScrollView.m
#import "AutoAdaptationScrollView.h"

@implementation AutoAdaptationScrollView


- (id) init
{
    if (self = [super init]) {
        _directionType = AutoAdaptationScrollViewPortrait;
    }
    return self;
}

- (id) initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame]) {
        _directionType = AutoAdaptationScrollViewPortrait;
    }
    return self;
}

- (void)autoAdaptationWithView:(UIView *)view
{
    
    if (_directionType == AutoAdaptationScrollViewPortrait) {
        NSArray *subviews = view.subviews;
        __block UIView *lastView;
        [UIView animateWithDuration:0.5f animations:^{
            for (UIView *view in subviews) {
                [self setViewY:CGRectGetMaxY(lastView.frame) view:view];
                lastView = view;
            }
            [self setContentSize:CGSizeMake(0.0f, CGRectGetMaxY(lastView.frame))];
            
        }];
    }else if (_directionType == AutoAdaptationScrollViewLandscape)
    {
        NSArray *subviews = view.subviews;
        __block UIView *lastView;
        [UIView animateWithDuration:0.5f animations:^{
            for (UIView *view in subviews) {
                [self setViewX:CGRectGetMaxX(lastView.frame) view:view];
                
                lastView = view;
            }
            [self setContentSize:CGSizeMake(CGRectGetMaxX(lastView.frame), 0.0f)];
            
        }];
    }
 
}

// 设置UIView的Y
- (void)setViewY:(CGFloat)newY view:(UIView *)mView
{
    CGRect viewFrame = [mView frame];
    viewFrame.origin.y = newY;
    [mView setFrame:viewFrame];
}

// 设置UIView的X
- (void)setViewX:(CGFloat)newX view:(UIView *)mView
{
    CGRect viewFrame = [mView frame];
    viewFrame.origin.x = newX;
    [mView setFrame:viewFrame];
    
}

@end


代码下载 http://download.csdn.net/detail/qqmcy/8460365

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杜甲同学

感谢打赏,我会继续努力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值