UIScrollview + autolayout似乎无法在iOS8 / Xcode 6预览中使用?

肖恩

UIScrollView + autolayout的以下步骤已为我工作,但在iOS8 / Xcode 6预览中不起作用:(使用情节提要,启用了size类):

  1. 将滚动视图添加到根视图。
  2. 将零空间固定到超级视图的所有边缘。
  3. 在上面的滚动视图中添加一个UIView(contentView)。
  4. 将零空间固定到scrollview的所有边缘
  5. 向contentView添加一些小部件,并将contentView的高度更改为2000。

=>此contentView在iOS 7中滚动,但是在iOS 8预览中无法执行相同的步骤。

即使它似乎可以在iOS 7中正常工作,也可能我的方法不正确?有什么建议么?

马特

我很惊讶没有看到更多对此的评论。滚动视图内部自动布局在iOS 8中已被破坏(截至撰写本文时为止)。

编辑这已在种子5中修复,因此应忽略此注释!

该规则应该是(请参阅https://developer.apple.com/library/prerelease/ios/technotes/tn2154/_index.html),如果将滚动视图(其子视图或子视图)的内容固定到所有滚动视图的四个边界,它设置内容的大小。

但是,在iOS 8中,此操作失败-但以一种奇怪的方式。仅当确定子视图的高度和宽度的约束全部是绝对的而不是固有的约束时,它才会失败

因此,例如,请考虑该技术说明底部的代码,其中在代码中创建了滚动视图和非常大的图像视图(在这里;我更正了一个小错字,其中删除了符号):

- (void)viewDidLoad {
    UIScrollView *scrollView;
    UIImageView *imageView;
    NSDictionary *viewsDictionary;
    // Create the scroll view and the image view.
    scrollView  = [[UIScrollView alloc] init];
    imageView = [[UIImageView alloc] init];
    // Add an image to the image view.
    [imageView setImage:[UIImage imageNamed:@"MyReallyBigImage"]];
    // Add the scroll view to our view.
    [self.view addSubview:scrollView];
    // Add the image view to the scroll view.
    [scrollView addSubview:imageView];
    // Set the translatesAutoresizingMaskIntoConstraints to NO so that the views
    // autoresizing mask is not translated into auto layout constraints.
    scrollView.translatesAutoresizingMaskIntoConstraints  = NO;
    imageView.translatesAutoresizingMaskIntoConstraints = NO;
    // Set the constraints for the scroll view and the image view.
    viewsDictionary = NSDictionaryOfVariableBindings(scrollView, imageView);
    [self.view addConstraints:[NSLayoutConstraint 
        constraintsWithVisualFormat:@"H:|[scrollView]|" 
        options:0 metrics: 0 views:viewsDictionary]];
    [self.view addConstraints:[NSLayoutConstraint 
        constraintsWithVisualFormat:@"V:|[scrollView]|" 
        options:0 metrics: 0 views:viewsDictionary]];
    [scrollView addConstraints:[NSLayoutConstraint 
        constraintsWithVisualFormat:@"H:|[imageView]|" 
        options:0 metrics: 0 views:viewsDictionary]];
    [scrollView addConstraints:[NSLayoutConstraint 
        constraintsWithVisualFormat:@"V:|[imageView]|" 
        options:0 metrics: 0 views:viewsDictionary]];
}

该代码有效(假设您有一个很大的图像),因为图像视图由固有约束确定大小但是现在更改最后两行,如下所示:

    [scrollView addConstraints:[NSLayoutConstraint 
        constraintsWithVisualFormat:@"H:|[imageView(1000)]|" 
        options:0 metrics: 0 views:viewsDictionary]];
    [scrollView addConstraints:[NSLayoutConstraint 
        constraintsWithVisualFormat:@"V:|[imageView(1000)]|" 
        options:0 metrics: 0 views:viewsDictionary]];

现在,您拥有的滚动视图在iOS 7上可滚动,但在iOS 8上不可滚动。进一步的调查表明,这是因为内容大小保持为(0,0); 它不遵守内容视图的绝对宽度和高度限制。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

UIScrollView为空的可滚动内容大小歧义(XCode 6)

来自分类Dev

Xcode 5 iOS 7-UIScrollView行为异常

来自分类Dev

尽管未使用自动布局,但垂直滚动在UIScrollView和iOS7和Xcode 5中不起作用

来自分类Dev

使用Xcode 6构建的应用无法在iOS8上运行

来自分类Dev

在iOS 8 / Xcode 6 GM Seed上使用自动布局调整大小时,UIScrollView中断

来自分类Dev

使用XCode 6的iOS8内置应用程序,iPhone 6上的文本仍然模糊

来自分类Dev

无法在Xcode 6 Playground中使用SpriteKit

来自分类Dev

显示用户的位置Xcode6 / IOS8

来自分类Dev

iCloud键值同步iOS8 Xcode 6

来自分类Dev

ios-Xcode 6上带有自动布局的UIScrollview

来自分类Dev

如何在Xcode 6中使用AutoLayout创建动态调整大小的页面水平UIScrollView

来自分类Dev

UIScrollView的Content View忽略了Xcode 6上与主视图相等的宽度约束

来自分类Dev

UIScrollView的Content View忽略了Xcode 6上与主视图相等的宽度约束

来自分类Dev

无法在Xcode中使用PFImageView

来自分类Dev

iOS:在Interface Builder中使用动态contentSize创建UIScrollView

来自分类Dev

在Xcode 5中使用iOS 6模拟器

来自分类Dev

使UIScrollView与AutoLayout一起使用

来自分类Dev

iOS Xcode约束预览?

来自分类Dev

使用XCode 6的iOS8内置应用程序,iPhone 6上的文本仍然模糊

来自分类Dev

iCloud键值同步iOS8 Xcode 6

来自分类Dev

XCode自动布局无法与UIScrollView一起使用以进行水平分页

来自分类Dev

更改UIScrollview的框架在iOS xcode中不起作用

来自分类Dev

在xcode iOS中将内容迁移到UIScrollView

来自分类Dev

UIScrollview + AutoLayout +使用拖动效果滚动

来自分类Dev

在iOS中使用计时器滑动UIScrollView

来自分类Dev

UIScrollView无法在使用Swift的UIView中工作

来自分类Dev

使用Spring / Strut AND AutoLayout(Xcode 8)

来自分类Dev

Xcode 似乎无法在 C 中使用数组

来自分类Dev

Xcode 中的 UIScrollView 使用 Springs 和 Struts

Related 相关文章

  1. 1

    UIScrollView为空的可滚动内容大小歧义(XCode 6)

  2. 2

    Xcode 5 iOS 7-UIScrollView行为异常

  3. 3

    尽管未使用自动布局,但垂直滚动在UIScrollView和iOS7和Xcode 5中不起作用

  4. 4

    使用Xcode 6构建的应用无法在iOS8上运行

  5. 5

    在iOS 8 / Xcode 6 GM Seed上使用自动布局调整大小时,UIScrollView中断

  6. 6

    使用XCode 6的iOS8内置应用程序,iPhone 6上的文本仍然模糊

  7. 7

    无法在Xcode 6 Playground中使用SpriteKit

  8. 8

    显示用户的位置Xcode6 / IOS8

  9. 9

    iCloud键值同步iOS8 Xcode 6

  10. 10

    ios-Xcode 6上带有自动布局的UIScrollview

  11. 11

    如何在Xcode 6中使用AutoLayout创建动态调整大小的页面水平UIScrollView

  12. 12

    UIScrollView的Content View忽略了Xcode 6上与主视图相等的宽度约束

  13. 13

    UIScrollView的Content View忽略了Xcode 6上与主视图相等的宽度约束

  14. 14

    无法在Xcode中使用PFImageView

  15. 15

    iOS:在Interface Builder中使用动态contentSize创建UIScrollView

  16. 16

    在Xcode 5中使用iOS 6模拟器

  17. 17

    使UIScrollView与AutoLayout一起使用

  18. 18

    iOS Xcode约束预览?

  19. 19

    使用XCode 6的iOS8内置应用程序,iPhone 6上的文本仍然模糊

  20. 20

    iCloud键值同步iOS8 Xcode 6

  21. 21

    XCode自动布局无法与UIScrollView一起使用以进行水平分页

  22. 22

    更改UIScrollview的框架在iOS xcode中不起作用

  23. 23

    在xcode iOS中将内容迁移到UIScrollView

  24. 24

    UIScrollview + AutoLayout +使用拖动效果滚动

  25. 25

    在iOS中使用计时器滑动UIScrollView

  26. 26

    UIScrollView无法在使用Swift的UIView中工作

  27. 27

    使用Spring / Strut AND AutoLayout(Xcode 8)

  28. 28

    Xcode 似乎无法在 C 中使用数组

  29. 29

    Xcode 中的 UIScrollView 使用 Springs 和 Struts

热门标签

归档