各位开发者,我在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

我想让AutoLayout UIScrollView与它一起工作,并且我遇到了一些麻烦.这是我做的:
UIScrollView在主视图内添加框架:[top:0,left:0,width:320,height:568]
UIView在UIScrollViewwith frame和bgcolor black中添加"ContentView" :[top:0,left:0,width:320,height:568]
设置UIScrollView约束:[top:0,bottom:0,left:0,right:0]
设置"ContentView"约束:[top:0,bottom:0,left:0,right:0]
对齐"ContentView"中的项目
将主视图bgcolor设置为灰色(查看发生了什么)
以下是问题的屏幕截图:http://imgur.com/P8s9lB0
由于某种原因,约束使内容视图位于屏幕的中间.此外,它向各个方向滚动.我希望内容只能在垂直方向上滚动UITableView,所以我不能这样移动:http://imgur.com/lBCwfAS
我究竟做错了什么?我已经检查了StackOverflow和Google中可以找到的所有教程和答案,并且没有人真正有一个奇怪的问题,所以我正在寻求帮助.
编辑:我还添加了ContentView的宽度和高度作为约束,这也没有帮助.
我正在Swift 2.0中开发一个小应用程序.我有一个具有以下层次结构的视图:
现在,放置在此视图中的元素无法完全显示在其中,因此我想使用a ScrollView以便能够滚动所有内容.
如何将我的所有内容嵌入View到新内容中ScrollView?我可以通过代码以编程方式执行此操作吗
我是故事板的新手; 我以前做过一些Interface Builder和很多手动UI定位.我搜索过这个问题,尝试过在其他相关帖子中找到的解决方案,但无济于事.
我有一个视图控制器,在Storyboards中添加了UIScrollView.ScrollView插座已连接,属性已合成.已选中滚动已启用.弹跳被检查.即便如此,也没有迹象表明会发生任何滚动.当我垂直检查Bounces时,我至少可以看到可滚动内容,但是在我发布之后它会反弹回来.我发现的框架尺寸设置为320和521.我尝试了不同的高度,但没有任何帮助.(什么应该是故事板中设置的尺寸,以适应较旧和较新的手机尺寸?).
在viewDidLoad中,我添加了
[scrollView setContentSize:CGSizeMake(320, 1000)];
Run Code Online (Sandbox Code Playgroud)
之后的日志声明确认此值已被接受.但它也没有帮助.
一篇帖子中有人建议添加:
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self.scrollView setContentSize:CGSizeMake(320, 808)];
}
Run Code Online (Sandbox Code Playgroud)
这会在加载控制器时导致程序崩溃.
任何帮助将不胜感激!
谢谢.
我遇到了关于UIScrollView的问题.我正在制作一个继承UIView的自定义视图.该视图有一个UIScrollView,其中有许多按钮可以向左和向右滚动.UIScrollView和按钮可以正常显示.但我无法滚动按钮.有人可以给我一些建议吗?非常感谢!
MZMPhotoCalenderSwitcher.h
#import <UIKit/UIKit.h>
@interface MZMPhotoCalenderSwitcher : UIView <UIScrollViewDelegate>
@property (strong, nonatomic) UIScrollView *topSwitcher;
@end
Run Code Online (Sandbox Code Playgroud)
MZMPhotoCalenderSwitcher.m
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.topSwitcher = [[UIScrollView alloc] initWithFrame:CGRectMake(0, LABEL_HEIGHT + VIEW_Y, self.view.bounds.size.width, TOP_SWITCHER_HEIGHT)];
self.topSwitcher.backgroundColor = [UIColor greenColor];
self.topSwitcher.pagingEnabled = YES;
self.topSwitcher.showsHorizontalScrollIndicator = NO;
self.topSwitcher.showsVerticalScrollIndicator = NO;
[self add:3 ButtonsOnView:self.topSwitcher withButtonWidth:44.8f andHeight:20.0f];
}
- (void)add:(int)num ButtonsOnView:(UIScrollView *)view withButtonWidth:(CGFloat)width andHeight:(CGFloat)height
{
CGFloat totalTopSwitcherWidth = num * width;
[view setContentSize:CGSizeMake(totalTopSwitcherWidth, view.bounds.size.height)];
CGFloat xOffset = 0.0f;
for …Run Code Online (Sandbox Code Playgroud) ios ×5
uiscrollview ×4
swift ×3
autolayout ×2
objective-c ×2
ios7 ×1
iphone ×1
scrollview ×1
uiview ×1
xcode ×1