UINavigationController + UIScrollView组合,视图尺寸的设置探秘(二)

承接上文,我想把view布局修改为如下模式,让ScrollView长在NavigationBar的下方,这总不会有遮挡的问题了吧:

story board内容如下,主要是右侧视图蓝色区域添加了ScrollView:

ViewController的代码如下:

@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@property (nonatomic, strong) UIView* viewA;
@property (nonatomic, strong) UIView* viewB;
@end
……
@implementation ViewController
……
- (void)viewDidLoad {
    [super viewDidLoad];

    CGRect rect = self.scrollView.bounds;
    rect.size.width *= 2;
    self.scrollView.contentSize = rect.size;
    self.scrollView.pagingEnabled = YES;
    // 在self.scrollView内添加两个view
    CGRect rtViewA = self.scrollView.bounds;
    self.viewA = [[UIView alloc]initWithFrame:rtViewA];
    self.viewA.backgroundColor = [UIColor redColor];
    [self.scrollView addSubview:self.viewA];

    CGRect rtViewB = self.scrollView.bounds;
    rtViewB.origin.x += rtViewA.size.width;
    self.viewB = [[UIView alloc]initWithFrame:rtViewB];
    self.viewB.backgroundColor = [UIColor blueColor];
    [self.scrollView addSubview:self.viewB];
}

得到的结果更加诡异了,我把ScrollView的背景色设为黄色,为什么我给viewA、viewB的origin.y的初始值应该为0,可是进入scrollView之后却靠下一条?而且滚动条的问题还是没有解决:

当我把viewA向上拖动到origin.y=0的位置后,还能在往上拖,可是viewA的高度已经和contentSize一样高了,这到底是怎么回事?

时间: 2024-11-04 15:24:27

UINavigationController + UIScrollView组合,视图尺寸的设置探秘(二)的相关文章

UINavigationController + UIScrollView组合,视图尺寸的设置探秘(一)

UINavigationController和UIScrollView是iOS下几种主要的交互元素,但当我搭配二者在一起时,UIScrollView的滚动区域出现了很诡异的现象.我希望UIScrollView横向可翻页,纵向与其frame等高不可滚动,但诡异的是:1.我把UIScrollView的contentSize设为和其frame高度相同,可结果是他总能上下滚动一小段.2.我在UIScrollView的(0, 0)位置创建一个子视图,运行时也总往下偏移几十个像素. 我的程序最初是这么写的:

UINavigationController + UIScrollView组合,视图尺寸的设置探秘(三)

还是在苹果的 View Controller Catalog for iOS 文章中找到答案.文中提到了两点: 1.If the navigation bar or toolbar are visible but not translucent, it does not matter if the view controller wants its view to be displayed using a full-screen layout. 如果navigation bar或者toolbar

UI:UIScrollView滚动视图

1.初始化 UIScrollView *scrollView = [[UIScrollViewalloc] init]; 2.设置尺寸 (1)按照屏幕尺寸 scrollView.frame =self.view.bounds; (2)自定义尺寸 scrollView.frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height); 3.设置背景色 scrollView.backgroundColo

bootstrap-datetimepicker年视图中endDate设置之后比正常时间提前两个月

bootstrap-datetimepicker年视图中endDate设置结束时间为2016-08,(即8月之后的日期不能选)而在日历上显示时为2016-06,相差两个月,即6月之后的日期不能选 解决方法:设置结束日期时默认添加两个月 但是当需要endDate为11或12月时,需要给endDate设置为2016-13/2016-14,这非日期格式,插件不认,最终的解决方法就是修改插件 在datetimepicker.js的800行左右 if (year == endYear) { months.

可视化工具gephi源码探秘(二)---导入netbeans

在上篇<可视化工具gephi源码探秘(一)>中主要介绍了如何将gephi的源码导入myeclipse中遇到的一些问题,此篇接着上篇而来,主要讲解当下通过myeclipse导入gephi源码的可行性不高以及熟悉netbeans,并把原本基于netbeans平台开发的gephi源码导入进netbeans后启动正常运行的过程,其中有遇到的不少问题和相应的解决方法. 前日工作梗概(还是沿着想把源码导入myeclipse的思路): 经过从各大子模块的pom.xml中筛选出符合条件的jar包写入项目下的p

[Openwrt 项目开发笔记]:Openwrt必要设置(二)

前面的两篇blog中,我将如何搭建Openwrt的开发.编译.调试以及烧写环境的方法一一列出了.从本文开始, 我将介绍如何一步一步进行Openwrt设置,以满足路由器作为智能家居网关的功能. ok,闲话休提,开始上干货. 一.Openwrt初始配置 1. 密码设置 当我们成功地将Openwrt刷入路由器后,路由器会经过大约4~5分钟的时间重启(以Netgear Wndr3700为例).待路由器启动之后,用一根网线与路由器LAN口直连,并将PC的IP设置到192.168.1.*网段. 提示:不同的

ASP.NET session时间的设置的二种方法,webconfig,global.asax(转)

ASP.NET session时间的设置方法一: asp.net Session的默认时间设置是20分钟,即超过20分钟后,服务器会自动放弃Session信息. 当我们在asp.net程序中打开webconfig的时候,可以看到一段如下的代码: Asp.net程序代码: <sessionStatemode="InProc"stateConnectionString="tcpip=127.0.0.1:42424"sqlConnectionString="

第四章 大高级网 OSPF高级设置 (二)

 OSPF 高级设置(二) 虚链路和路由汇总 实验要求: 1.配置路由地址 2.配置虚链路 3.验证 一.配置OSPF多区域 二.验证area0是否与area1和area2 互通 三.设置虚链路(将area1区域看做透明的) 四.验证 路由汇总 实验要求: 1.配置各路由器地址 2.配置 OSPF多区域 3.配置路由汇总 4.验证效果 一.配置路由地址 R1 R4 二.设置area0和area1 三.验证area0和area1互通 四.重分发 R3 五.验证 全网互通 六.查看路由表 七.路由汇

UIScrollView 滚动视图的方法总结

UIScrollView的属性总结 属性 作用 CGPoint contentOffSet-------------------------- 监控目前滚动的位置 CGSize contentSize------------------------------ 滚动范围的大小 UIEdgeInsets contentInset--------------------- 视图在scrollView中的位置 id<UIScrollerViewDelegate> delegate------ 设置协