Masonry和scrollView的结合使用,在手机横屏的状态也能看到竖屏时的内容
来源:互联网 发布:360赚钱软件 编辑:程序博客网 时间:2024/06/01 10:48
在学习了autolayout之后,现在使用的是比较流行的Masonry的第三方开发库,使用之后,发现在手机横屏的情况下,虽然能够自适应,但是由于横屏的状态下,有一些控件跑到了
屏幕的下面,这样让人很不爽,所以想到添加scrollerView,但是设置Contentoffsize挺恶心的,还得计算总的控件的高度,这种模式的话,可以很好地解决问题,希望大家提建议
#import "Masonry.h"
@interface MeetingViewController ()<UIScrollViewDelegate>
{
UIScrollView *_scroll; // 滚动视图
UIView *_superView;
UIView *_activeView; // 添加在_superView最上面一层的View
UIView *_meetingView; // 添加在_superView最上面一层的View
UIView *_titleView;
}
@end
#pragma mark- 创建界面
- (void)createUI
{
// 1、首先是创建一个scrollerView
_scroll = [UIScrollViewnew];
_scroll.delegate =self;
_scroll.backgroundColor = [UIColorcyanColor];
[self.viewaddSubview:_scroll];
// 2、自适应
[_scrollmas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(self.view);
}];
// 3、创建一个普通的View,放在scrollerView上面,如果scrollerView是上下滑动的话就设定_superview的宽和scrollerView宽相等。如果是左右滑动的话就将_superView的高给固定,等于scrollerView的高
_superView = [UIViewnew];
[_scrolladdSubview:_superView];
[_superViewmas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(_scroll);
make.height.equalTo(_scroll.mas_height);
// 如果是上下滑动的话就将他的宽设定为_scrolleView的宽
// make.width.equalTo(_scroll.mas_width);
}];
// 4、创建两个View用来盛放两个左右滑动的页面
_activeView = [UIViewnew];
_meetingView = [UIViewnew];
_scroll.pagingEnabled =YES;
// 5、将创建的两个子view添加到_superview中,上下滑动的一个道理
[_superViewaddSubview:_activeView];
[_superViewaddSubview:_meetingView];
// 6、两个view的自适应,这里的两个view的宽是固定的,当他们的相对的位置都是写的_superview的,写成scrollerView的或者其他的,就会出现很奇妙的情况,这里的宽度无所谓
[_activeViewmas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(_superView.mas_left);
make.top.equalTo(_superView.mas_top);
make.bottom.equalTo(_superView.mas_bottom);
make.width.equalTo(self.view.mas_width);
}];
[_meetingViewmas_makeConstraints:^(MASConstraintMaker *make) {
make.left.equalTo(_activeView.mas_right);
make.top.equalTo(_superView.mas_top);
make.bottom.equalTo(_superView.mas_bottom);
make.width.equalTo(_activeView.mas_width);
}];
// 7、最后一步更新_superView的最下面的边,使_superView的底部和最后的一个控件的底部距离为0,然后大功告成
[_superViewmas_updateConstraints:^(MASConstraintMaker *make) {
make.right.equalTo(_meetingView.mas_right);
}];
// 8、将两个ViewController上面的View添加到上面,我这里是将两个ViewControllerview的View分别添加到创建的最上面的一层view上面的
ActiveController *active = [[ActiveControlleralloc] init];
[selfaddChildViewController:active];
[_activeViewaddSubview:active.view];
[active.viewmas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(_activeView);
}];
MeetingController *meeting = [[MeetingControlleralloc] init];
[selfaddChildViewController:meeting];
[_meetingViewaddSubview:meeting.view];
[meeting.viewmas_makeConstraints:^(MASConstraintMaker *make) {
make.edges.equalTo(_meetingView);
}];
}
- Masonry和scrollView的结合使用,在手机横屏的状态也能看到竖屏时的内容
- Masonry+ScrollView的使用
- Masonry和UITableView-FDTemplateLayoutCell的结合使用
- iis和tomcat结合使用,让IIS发布的应用也能访问到JSP
- Masonry的使用和介绍
- C#写好的类库dll在别人调用的时候也能看到注释的方法
- AutoLayout中一些需要注意的点--结合Masonry使用
- Masonry和UITableView-FDTemplateLayoutCell结合使用时遇过的坑
- C#写好的类库dll怎么在别人调用的时候也能看到注释?
- ListView和ScrollView的结合 解决方法
- 插值器和ScrollView的完美结合
- 让客户端javascript修改的内容在服务端也能记忆的一个简单例子
- 手机也能开机启动(值得研究一下啊!在索尼爱立信上面发现的)
- android集成Umeng推送获取不到device_token也收不到消息,但是在Umeng后台可以看到设备的状态
- Masonry的简单使用
- Masonry的使用
- masonry的简单使用
- Masonry的使用
- FTP命令的模式
- 黑马程序员-C语言学习笔记-----内存分配函数(malloc、calloc、realloc)
- Ant学习笔记--入门
- cocos2d-x 3.4 之 文字按钮与图片按钮(更新I)
- CLOCK_MONOTONIC and CLOCK_REALTIME .
- Masonry和scrollView的结合使用,在手机横屏的状态也能看到竖屏时的内容
- 产生1-num的随机数,总共产生num组,C++,Python
- DrawerLayout实现侧滑
- groovy脚本导致的FullGC问题
- delphi获取目录下所有文件名[delphi]
- 1,Linux入门
- hdu 1505 City Game 最大矩形面积 单调队列
- java.lang.NoClassDefFoundError: org/apache/juli/logging/LogFactory的解决
- 焦点处理的先后顺序