创维电视屏幕底部线路板上的集成块4191的线路板烧坏了还能修好吗

IOS Autolayout ScrollView无法滚动的解决办法
本文作者:xjtudll&&发布于:&&分类:&&点击:
参考资料:
设定autolayout之后,发现scrollview无法滚动了,导致无法查看所有的内容。在viewDidLoad里重新设定scrollview的contentSize,还是不行。
viewDidLoad时,autolayout还没有运行,所以设置了之后。等autolayout运行之后,还是被初始化为autolayout预设值了。
解决办法:
在viewDidAppear里重新设置contentSize,例如:
- (void)viewDidAppear:(BOOL)animated
&&& [super viewDidAppear:animated];
&&& self.scrollView.contentSize = self.imageView.image.
&&& self.imageView.frame = CGRectMake(0, 0,
&&& self.imageView.image.size.width, self.imageView.image.size.height);
本文标签:&&&&&
本文Url:&&(出自:&鸟的天空)
我要引用:&
382.&&&( 17:56:59)379.&&&( 11:26:59)374.&&&( 14:1:35)370.&&&( 17:0:24)364.&&&( 16:40:38)363.&&&( 13:42:55)358.&&&( 8:53:43)357.&&&( 13:33:32)356.&&&( 12:38:5)355.&&&( 17:29:8)
Write a comment ?
正文(*)(留言最长字数:1000)AutoLayout 与 UIScrollView的相遇是一个不可避免的场景,像UITableView、UIWebView这些都是继承于UIScrollView的,关于它们的autolayout布局大体一致,但还是会有略微不同,而我们这篇讨论的主要是其contentSize问题,所以就直接讲UIScrollView就OK了。
如上图,我们将view分为3个部分,上面一部分主要用于展示海报或者一些封面图片,中间部分用来展示一些基本的信息,比如商品页面的价格,销量,分类等比较重要的信息,下面用于展示一些额外的信息,比如推荐给用户的一些其它商品或者门店等信息。
我们先按之前讲的来添加一些contraints,看一下UIScrollView里面添加Constraints有什么区别没有。 先依次添加约束:
1.为上面的橙色view与UIImageview添加高度与上下左右的边距约束。
2.然后再添加中间蓝色view及其内容的高度与上下左右边距的约束。
3.再添加UISegment的高度与上下左右边距的约束。
4.再添加底部的UITableView的上下左右边距约束。
我们来看一下IB会怎么处理目前的约束:
Scroll View ,Need constraints for height
Scrollable Content Size Ambiguity, Has ambiguous scrollable content height
Missing Constraints, Need constraints for : width
Scrollable Content Size Ambiguity,Has ambigous content size
全是Scrollview的问题,而且意思基本上就是说IB无法确定ScrollView的宽度与高度,我们知道UIScrollView最重要的就是其contentSize的宽高了,如果这个无法确定,那scrollview就无法知晓可以滚动查看的区域。其实这仅仅是表象,IB不会因为contentSize的可见区域不确定而抱怨,因为它会有一个默认的可见区域就是其bounds,其实IB真正抱怨的是其内部的subViews的布局对于它的依赖,比如我们看最上面的橙色View相对于上、左、右的约束都相对于scrollview的。scrollview内部的subViews的约束全依赖于scrollview,这样子的话,问题就来了,Scrollview和UILabel、UIButton等这些控件一样都会根据内容调整其contentSize(autolayout布局模式中,UILabel这种控件都会根据内容对自身宽高进行调整),如果Scrollview要根据其subviews来调整自身的contentsize,而其subviews又要根据scrollview的contentsize调整自身的布局,是不是就矛盾了,就成了相互依赖了。
所以IB要求UIScrollview(当然包括继承于它的UITableview、UIWebview这些控件)的contentSize必须在布局时能够确定。
由于Scrollview的contentSize由其subviews确定,其subviews的布局依赖于其父视图Scrollview的边界。这个矛盾,要不解决前者问题,要不解决后者,即要么不让UIScrollView的contentSize由其subviews确定,要么就让ScrollView的subviews不依赖其contentSize(即Scrollview的边界)。很显然,我们只能选择后者,因为前者你无法改变,其实从宏观上来看,改变了一个就相当于改变了两个,其实二者并没有什么特别区别,都是同一个问题导致的。
既然我们想好了策略,就来试一下,如何才能让Scrollview的subviews不依赖于其边界呢? 我们首先不考虑subviews的复杂布局情况,我们先把subviews嵌入到一个我们自己添加的ContainerView中,从而把我们的布局任务简化成Scrollview与ContainerView二者的约束关系,所有之前的subviews我们都放在ContainerView中,则subviews的约束就会仅仅依赖于ContainerView了,这些subviews不再与scrollview有直接关系。
我们虽然简化了布局任务,但是还是无法绕过Scrollview的ContentSize的边界确定问题,我们前面已经知道了Scrollview的子视图不能依赖于ScrollView的边界,那我们就让其子视图不依赖于其边界即可。 国外有一个网友在遇到上面的问题的时候就咨询了Apple的工程师,结果他们画了40分钟才给出了解决方案,这说明Scrollview在autolayout中的使用真的不是那么简单。Apple的工程师给出的解决方案就是让我们的ContainerView建立一个与UIScrollview的父视图即我们的main view建立一个Equal Width,Equal Height约束,这样子ContainerView的宽高就不再依赖于ScrollView的边界了,但是ContainerView还是Scrollview的子视图,Scrollview的边界还是没有确定,我们还要为ContainerView添加与ScrollView的边界约束,用以帮忙ScrollView确定边界。
OK,我们建立了ContainerView与mainview的equal width与 equal height后,效果果然就是我们想要的。 关于Autolayout与Scrollview相遇的故事,我们就先讲到这里,关于布局的场景总是像国际象棋一样,有数不尽的步骤与结果,连Machine都可以为之苦恼,所以这里只是通过这么一个示例,让大家对autolayout的布局理念有一个更深入的认识,不要过多的去抓鱼,而要学会如何抓鱼,抓鱼的诀窍是什么,学习一门技术,大家都会有各自的体会与理解,从根本上去掌握技术的原理,以此来应对千变万化的场景才能事半功倍。
本文示例代码:
为了更好的理解autolayout的原理,推荐阅读:
Apple工程师如何讲解AutoLayout的?讲解视频地址:,找名称为Cocoa Autolayout的那一个视频。
阅读(...) 评论()问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
想用StoryBoard开发个ipad和iphone通用的APP,有个scrollView滚动显示图片,我自己用autoLayout约束的ScrollView有各种问题,所以请教下大家要怎样去约束scrollView
谢谢大家的帮忙和思路,我现在已经弄得差不多了,现在遇到了一个问题,就是我没有加导航控制器的时候是完全没问题了的
但是加了导航条以后就会出现这样的情况,红色那块是滚动视图的颜色
重新约束也一样会有红色的那块存在,求解
问题解决,加了一句self.automaticallyAdjustsScrollViewInsets = NO;就可以了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
首先说明以下,对于scrollview的约束不简单,尤其在scrollview里面再放东西,我个人只做过简单的scrollview。
之前在看autolayout的时候遇到很多专门的帖子来叙述scrollview的约束,当时觉得复杂就没有收藏连接...不能转给你了。
大概说一下我现在对于scrollview的处理方法。
1.如果是采用可视化界面的开发(我们用的是xib,storyboard类似),我会在scrollview里放我的控件,然后选择全部的控件,选择“添加建议的约束”(手上暂时没有mac电脑下午补一张截图)。这样的话在大部分情况都是可以完成自适应的。
2.因为有的时候这种自动布局的方式不能很好的适应(也有可能是我约束设置的不好)。这种情况下我会采用纯代码的方式来布局整个scrollview,这样对于scrollview里的内容我可以很好的根据屏幕来适应。
3.题主说到是用scrollview滚动显示图片,如果是多张的话,可以使用uitableview。对于tableview本身,是可以很好的利用autolayout来自适应的。
以上,如果还有什么问题可以留言给我。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
秘诀在于在ScrollView上加一个UIView,然后在UIView上添加你想要的内容
然后最关键的地方在于使该UIView的width(如果要左右划动就是height)和Viewcontroller的背景View的width相等。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
整过。。。 直接上图
滚动栏是ScrollView
内容视图是UIView
其他UIImageView
技巧楼上貌似说了 加一个 dummyView。。。 对应的是内容视图
父亲、兄弟视图约束
儿子视图约束
超过1屏的图片2约束展示
看了下好像有多余的约束。。自己改下咯
你这是算两个问题吧。。。问题二的原因是 因为加了导航栏。。ScrollView及其子类都有的问题。。
解决方案:
就是你可以打印下scrollView.contentInset.top
以及打印下scrollView.contentInset.
你就动啥原因了。。。
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App通乐国际娱乐热新闻
通乐国际娱乐APP下载
通乐国际娱乐:热门推荐

我要回帖

更多关于 集成块4191的线路板 的文章

 

随机推荐