相关疑难解决方法(0)

UIScrollView可滚动内容大小模糊

各位开发者,我在Interface Builder(Xcode 5/iOS 7)中遇到AutoLayout问题.这是非常基本和重要的,所以我想每个人都应该知道这是如何正常运作的.如果这是Xcode中的一个错误,那就是一个关键错误!

所以,每当我有一个像这样的视图层次结构时,我遇到了麻烦:

>UIViewController
>> UIView
>>>UIScrollView
>>>>UILabel (or any other comparable UIKit Element)
Run Code Online (Sandbox Code Playgroud)

UIScrollView具有可靠的约束,例如,每侧50 px(没问题).然后我向UILabel添加一个Top Space约束(没问题)(我甚至可以固定标签的高度/宽度,不做任何改变,但由于Label的内在大小,应该是不必要的)

当我向UILabel添加尾随约束时,麻烦就开始了:

例如,尾随空间:Superview等于:25

现在出现了两个警告 - 我不明白为什么:

A)可滚动内容大小歧义(滚动视图具有不明确的可滚动内容高度/宽度)

B)错位视图(预期标签:x = -67实际值:x = 207

我在一个新的项目中做了这个最小的例子,你可以下载并附上截图.如您所见,Interface Builder期望Label位于UIScrollView边界之外(橙色虚线矩形).使用Resolve Issues Tool更新Label的框架会将其移动到那里.

请注意:如果用UIView替换UIScrollView,行为就像预期的那样(Label的框架是正确的,并且根据约束条件).所以似乎UIScrollView存在问题,或者我错过了重要的事情.

当我按照IB的建议运行应用程序而不更新Label的框架时,它定位得很好,正好在它应该是的位置,并且UIScrollView是可滚动的.如果我更新框架,标签不在视线范围内,UIScrollView不会滚动.

帮助我Obi-Wan Kenobi!为什么模棱两可的布局?为什么错位的观点?

你可以在这里下载示例项目,如果你能弄清楚发生了什么就试试:https: //github.com/Wirsing84/AutoLayoutProblem

Interface Builder中的问题的插图

interface-builder uiscrollview ios autolayout swift

472
推荐指数
12
解决办法
25万
查看次数

如何使用Swift以编程方式添加约束

自上周以来我一直试图解决这个问题,而没有更进一步.好的,所以我需要在Swift中编程方式应用一些约束 来使用这段代码:UIView

var new_view:UIView! = UIView(frame: CGRectMake(0, 0, 100, 100));
new_view.backgroundColor = UIColor.redColor();
view.addSubview(new_view);

var constX:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterX, multiplier: 1, constant: 0);
self.view.addConstraint(constX);

var constY:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self.view, attribute: NSLayoutAttribute.CenterY, multiplier: 1, constant: 0);
self.view.addConstraint(constY);

var constW:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: new_view, attribute: NSLayoutAttribute.Width, multiplier: 1, constant: 0);
self.view.addConstraint(constW);

var constH:NSLayoutConstraint = NSLayoutConstraint(item: new_view, attribute: …
Run Code Online (Sandbox Code Playgroud)

uiview ios autolayout nslayoutconstraint swift

409
推荐指数
14
解决办法
38万
查看次数

如何使用Autolayout在我的UIScrollview上设置约束?

我花了两天时间尝试混合和纯Autolayout方法的各种解决方案,以实现自动布局之前的简单滚动视图设置,现在它已经正式 - 我必须太愚蠢.我主要是在Storyboard中设置它(好吧,它就是这样).

所以这是我的求助.

Viewtree:

UIView
-UIView
-UIView
..-UIScrollview
...-UIButton
...-UIButton
...-UIButton
Run Code Online (Sandbox Code Playgroud)

按钮应该水平滚动(从左到右,反之亦然).有人可以让我知道如何设置的约束来实现这个使用纯自动布局???

-

我尝试过混合方法,如下所示:

UIView
- UIView
- UIView
..-UIScrollview
...-UIView (contentview)
....-UIButton
....-UIButton
....-UIButton
Run Code Online (Sandbox Code Playgroud)

...并根据Apple的TechNote contentviewtranslatesAutoresizingMaskIntoConstraints设置和设置设置固定的宽度和高度限制.使用约束设置按钮和滚动视图.这让滚动视图滚动(yay)但是唉,它滚动得太远了!据我所知,滚动宽度在某种程度上比我设置的内容视图加倍了??? !!! ???

我尝试了纯自动布局方法,包括contentview有无.所有观点都是translatesAutoresizingMaskIntoConstraints=NO,除了self.view.按钮具有固定的宽度/高度约束,并固定到滚动视图的所有四个边缘.什么都不滚动.

所以我完全不知道为什么我不能让它正常工作.非常感谢任何帮助,如果您需要任何其他信息,请询问!

更新截图与解决方案 - buttonZ约束:

在此输入图像描述

编辑@ Jamie Forrest 所以解决方案结果是最后一个按钮的错误尾随约束.而不是6441,我设置的值是负数,-6441.棘手的是,在storyboard中设置值时,Pin工具栏中有两个选项:

在此输入图像描述

当前画布值为负(导致无滚动),下面的选项为正(激活滚动).这意味着我不是傻瓜,但我猜至少半盲.虽然,为了我的辩护,XCode没有为"错误"设置显示错误,这有点令人不安吗?

再次编辑 现在这很有趣......将尾随值从-6441(无滚动)更改为6441启用滚动.但我的老朋友"太多内容化"又回来了,导致内容大小是应有的两倍!获取正确内容滚动的解决方案是将尾随约束设置为ZERO!当在Storyboard中工作但是查看@Infinity James的代码时,这并不明显,它应该是什么.

storyboard uiscrollview ios autolayout

173
推荐指数
6
解决办法
9万
查看次数

UILabel - 适合文字的自动尺寸标签?

是否可以自动调整UILabel框/边界的大小以适应包含的文本?(我不在乎它是否比显示器大)

因此,如果用户输入"你好"或"我的名字真的很长,我希望它适合这个盒子",它永远不会被截断,标签会相应地"加宽"吗?

iphone objective-c uilabel ios

143
推荐指数
7
解决办法
23万
查看次数

不等式约束歧义

我在使用Autolayout和约束来调整UIView的大小时遇到​​了问题.我想改变原点(小于或等于原始)和宽度(大于或等于原始)但我得到了这个:不等式约束歧义

你有解决这个问题的想法吗?

谢谢

查看错误

约束错误

constraints objective-c ios autolayout ios7

23
推荐指数
3
解决办法
2万
查看次数

添加布局约束的优先级

我有一个labelbuttonsuperView这样的.

|--------------[Label]-----[button]-|
Run Code Online (Sandbox Code Playgroud)

我想的labelcentred如果可能的话,那么有差距最小的button,并向左移动.

所以,如果按钮很大,它看起来像......

|-[        LABEL!        ]-[button]-|
Run Code Online (Sandbox Code Playgroud)

因此,按钮保持原样并且尺寸相同.并且元素之间存在最小间隙.

我可以添加centerX约束,但我似乎无法给它一个优先级,所以它仍然存在Required.

我该如何创造这种情况?我在代码中进行所有自动布局.

我目前的限制是......

[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-[_label]-(>=8@1000)-[_button(==45)]-|"
                                                             options:NSLayoutFormatAlignAllCenterY
                                                             metrics:nil
                                                               views:views]];

[self addConstraint:[NSLayoutConstraint constraintWithItem:_label
                                                 attribute:NSLayoutAttributeCenterX
                                                 relatedBy:NSLayoutRelationEqual
                                                    toItem:self.contentView
                                                 attribute:NSLayoutAttributeCenterX
                                                multiplier:1.0
                                                  constant:0.0]];
Run Code Online (Sandbox Code Playgroud)

但我不确定如何降低第二个约束的优先级.

iphone objective-c ios autolayout

16
推荐指数
1
解决办法
2万
查看次数

两个不等式约束的模糊性

截图

我希望底部视图距离图像其上方的标签至少20个.标签是多行的,因此它可以比图像视图更高或更短,具体取决于文本的数量.当我添加两个"距离最近邻居> = 20"的约束时,如屏幕截图所示,Xcode告诉我约束是模棱两可的.

我如何解决它?

ios autolayout

15
推荐指数
1
解决办法
5510
查看次数

iOS - 使用storyboard和autolayout将UIScrollView居中

我正在使用故事板和自动布局创建iOS应用程序,以便在iPhone4和iPhone5上都能正常运行.下面是我使用故事板创建的视图的屏幕截图.

在此输入图像描述

在上图中,我想将滚动视图保持在superview的前沿和右表视图的中间.我不希望滚动视图在iPhone5中增加其宽度.我尝试了不同的约束组合,但我无法实现它.

有些人可能会建议我为滚动视图设置的所有约束是什么,以便它位于中心.

storyboard uiscrollview ios autolayout

12
推荐指数
2
解决办法
2万
查看次数

在自动布局的情况下,IOS scrollview模糊的可滚动内容高度

嗨,我正在开发小型IOS应用程序,其中我使用scrollview与自动布局.内部滚动我添加了两个以上的视图.我正在使用IB和自动布局约束.我以纵向方式一个接一个地添加两个视图.我添加了外部约束,如尾随,前导,顶部,底部空间.我还为两个视图添加了高度限制.直到这一切都运转良好.

但我的view1有一些动态内容.出于这个原因,我想使高度约束大于等于而不是等于.

在此输入图像描述

在此输入图像描述

那么如何解决这个问题呢.需要一些帮助.谢谢.

objective-c uiscrollview ios autolayout

7
推荐指数
2
解决办法
8723
查看次数