IOS UIScrollView滚动内容自适应
2017-09-06 10:37
330 查看
设计思路:调整contentSize即可:
本例未采用分类 ,而用子类扩展的方法,源码如下:
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSInteger, Oritation) {
horizontal = 1,
vertical,
};
/**
解决自适应滚动
*/
@interface AutoLayoutScrollView : UIScrollView
/**
自适应内容滚动尺寸
@param type 滚动方向
*/
-(void) autoContentSize:(Oritation) type;
@end
.m文件为:
#import "AutoLayoutScrollView.h"
@implementation AutoLayoutScrollView
-(void) autoContentSize:(Oritation) type{
CGFloat width = 0;
CGFloat height= 0;
for (UIView* view in self.subviews){
height += view.frame.size.height;
width += view.frame.size.width;
}
switch (type) {
case horizontal:{
self.contentSize = CGSizeMake(width, 0.0f);
}
break;
case vertical:{
self.contentSize = CGSizeMake(0.0f, height);
}break;
default:
break;
}
}
@end
测试代码:在vc中
AutoLayoutScrollView* scrollView = [[AutoLayoutScrollView alloc] initWithFrame:CGRectMake(20, 50, 300, 300)];
//scrollView.contentSize = CGSizeMake(300, 500);
scrollView.backgroundColor = [UIColor grayColor];
[self.view addSubview:scrollView];
for(int i=0;i<7;i++){
UILabel* test = [[UILabel alloc] initWithFrame:CGRectMake(0, 40 * i, 100, 50)];
test.text = [NSString stringWithFormat:@"test:%d",i];
[scrollView addSubview:test];
}
[scrollView autoContentSize:vertical];
本例未采用分类 ,而用子类扩展的方法,源码如下:
#import <UIKit/UIKit.h>
typedef NS_ENUM(NSInteger, Oritation) {
horizontal = 1,
vertical,
};
/**
解决自适应滚动
*/
@interface AutoLayoutScrollView : UIScrollView
/**
自适应内容滚动尺寸
@param type 滚动方向
*/
-(void) autoContentSize:(Oritation) type;
@end
.m文件为:
#import "AutoLayoutScrollView.h"
@implementation AutoLayoutScrollView
-(void) autoContentSize:(Oritation) type{
CGFloat width = 0;
CGFloat height= 0;
for (UIView* view in self.subviews){
height += view.frame.size.height;
width += view.frame.size.width;
}
switch (type) {
case horizontal:{
self.contentSize = CGSizeMake(width, 0.0f);
}
break;
case vertical:{
self.contentSize = CGSizeMake(0.0f, height);
}break;
default:
break;
}
}
@end
测试代码:在vc中
AutoLayoutScrollView* scrollView = [[AutoLayoutScrollView alloc] initWithFrame:CGRectMake(20, 50, 300, 300)];
//scrollView.contentSize = CGSizeMake(300, 500);
scrollView.backgroundColor = [UIColor grayColor];
[self.view addSubview:scrollView];
for(int i=0;i<7;i++){
UILabel* test = [[UILabel alloc] initWithFrame:CGRectMake(0, 40 * i, 100, 50)];
test.text = [NSString stringWithFormat:@"test:%d",i];
[scrollView addSubview:test];
}
[scrollView autoContentSize:vertical];
相关文章推荐
- IOS 怎么用UIScrollView来滚动和缩放他的内容第一篇
- IOS 怎么用UIScrollView来滚动和缩放他的内容第一篇
- UIScrollView 滚动视图—IOS开发
- IOS UIScrollView滚动到指定位置
- iOS的WebView自适应内容高度
- iOS UIScrollView滚动时导航栏背景渐变
- iOS滚动视图UIScrollView
- iOS UITableView cell自适应内容高度
- iOS UIScrollView滚动视图/无限循环滚动/自动滚动的实例代码
- 【iOS-Cocos2d游戏开发之十六】添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!【2011年11月15日更新】
- UIScrollVIew 滚动视图内容总结
- iOS 滚动视图 UIScrollView 代理方法 相关属性 状态栏 滚动条 回弹 弹簧效果
- iOS学习笔记--滚动视图(UIScrollView)
- IOS UIScrollView + UIButton 实现segemet页面和顶部标签页水平滚动效果
- iOS UIScrollView滚动视图/无限循环滚动/自动滚动
- iOS【终极方案】精准获取webView内容高度,自适应高度
- iOS的WebView自适应内容高度(真实高度)
- iOS UIScrollView 设置滚动
- iOS开发之 滚动视图 + 页面控件(UIScrollView + UIPageControl)
- IOS UI-滚动视图(UIScrollView)