Autolayout 使 ScrollView 中的 ImageView 无法滚动

Posted

技术标签:

【中文标题】Autolayout 使 ScrollView 中的 ImageView 无法滚动【英文标题】:Autolayout makes ImageView in ScrollView unscrollable 【发布时间】:2013-10-05 01:30:51 【问题描述】:

所以我和我的伙伴一直在开发一个应用程序。我们在 ScrollView 中嵌入了一个 ImageView。它可以在 ios 5 上运行,但现在我们正在将其更新到 iOS 7。我们现在必须使用自动布局让它看起来再次看起来不错。但这会禁用滚动它。我们已经尝试了一段时间来添加允许图像再次滚动的代码,但没有任何帮助。

我们已经尝试了所有可以找到的处理 viewDidLoad(我们最初为 iOS 5 做的地方)和 viewDidAppear(我们添加的内容以符合 iOS 7 和更好的实用性标准)。任何建议都将不胜感激,我们已经用尽了所有尝试。

@property (weak, nonatomic) IBOutlet UIScrollView *Scroll;
@property (weak, nonatomic) IBOutlet UIImageView *Image;

...

- (void)viewDidLoad

    [super viewDidLoad];

    // This is what we did for iOS 5
    //self.Scroll.contentSize = self.Image.image.size;
    //self.Image.frame = CGRectMake(0, 0, self.Image.image.size.width, self.Image.image.size.height);


-(void)viewDidAppear:(BOOL)animated

    [super viewDidAppear:animated];

    //One of the many NEW attempts for iOS 7
    self.Scroll.contentSize = CGSizeMake(self.Image.image.size.width,self.Image.image.size.height);

【问题讨论】:

【参考方案1】:

您的约束可能分配不正确。

我能够让它在约束条件下工作:

NSDictionary *bindings = @@"imageView": self.Image;
[self.Scroll addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[imageView]|" options:0 metrics:0 views:bindings]];
[self.myScrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[imageView]|" options:0 metrics:0 views:bindings]];

另见:https://***.com/a/13548039/580291 并指出:https://developer.apple.com/library/ios/releasenotes/General/RN-iOSSDK-6_0/index.html(搜索滚动视图)

【讨论】:

我们在 iOS 5 中不必处理约束,我们如何知道我们是否正确/错误地分配了它们? 我建议您从 wwdc 视频中了解自动布局。

以上是关于Autolayout 使 ScrollView 中的 ImageView 无法滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 AutoLayout (iOS/Xamarin.iOS) 使 ScrollView 适合其内容?

storyBoard方式ScrollView的AutoLayout

如何在 Xcode 6.3 中使用 AutoLayout 创建 ScrollView

storyBoard方式ScrollView的AutoLayout

Autolayout与ScrollView的恩怨情仇

使用 ScrollView 时出现 Autolayout 和 StackView 的问题