目标 - C UIScrollView 不能水平工作

Posted

技术标签:

【中文标题】目标 - C UIScrollView 不能水平工作【英文标题】:Objective - C UIScrollView not working horizontally 【发布时间】:2013-08-07 14:04:51 【问题描述】:

我阅读了所有其他类似问题的回复,但我的项目仍然无法运行。 有什么帮助吗?

这是我的项目。

----------------> viewController.h

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
IBOutlet UIScrollView *scroll;
IBOutlet UIImageView *imagev;

----------------> viewController.m

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad

  [super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
imagev.image = [UIImage imageNamed:@"ka.jpg"];
[scroll setContentSize:CGSizeMake(700, 700)];
[scroll setScrollEnabled:TRUE];
[scroll setShowsVerticalScrollIndicator:YES];
[scroll setShowsHorizontalScrollIndicator:YES];


@end

一切看起来都很好,但滚动视图不会滚动..

编辑:正如他们在这里建议的那样,问题是自动布局。我修复了滚动视图

【问题讨论】:

***.com/questions/2748326/… 你的 UIScrollView 是否垂直滚动? 什么是滚动视图框架? scrollView 有多大?究竟什么不起作用? 回答你之前的问题,你被否决的可能原因是因为你说“我的项目不工作”。得到负面评价的不是那些话,而是你什么也没说,只是向我们吐你的代码。您需要确保记下您尝试过的具体内容以及完全无效的内容,并对您的应用环境进行更详细的说明。你知道你的应用是什么样的,但我们不知道。考虑到您正在与不了解您的项目的陌生人交谈。 【参考方案1】:

我已经为您解决了问题,您可以继续使用自动布局。

在“ViewController.m”中实现如下方法

- (void)viewDidLayoutSubviews

    [scroll setContentSize:CGSizeMake(700, 700)];

您可以从-viewDidLoad 方法中删除[scroll setContentSize:CGSizeMake(700, 700)];

这将为您解决此问题,您可以继续使用自动布局。自动布局在 ios 6 中有点狡猾。但在 iOS 7 中显然要好得多。

【讨论】:

【参考方案2】:

我相信 Autolayout 会导致问题。尝试将其关闭。

    在 Storyboard 或 NIB 中选择 ViewController 单击 Xcode 窗口右侧的“文件检查器”选项卡 在“Interface Builder Document”部分下,取消选中“Use Autolayout”

【讨论】:

自动布局是 Apple 让支持多种屏幕尺寸/分辨率(iPhone 4、iPhone 5 等)变得更容易的方法。虽然它应该让事情变得更容易,但有时它会妨碍并导致意想不到的事情发生。 如果它最初是基于自动布局设计的,那么删除自动布局会弄乱你的屏幕。【参考方案3】:

目标 - C 您可以在 *.m 文件的 - (void)viewDidLoad 函数中使用这行代码:

[scroll setContentSize:CGSizeMake(320, 800)];
[scroll setScrollEnabled:TRUE];
[scroll setShowsVerticalScrollIndicator:NO];
[scroll setShowsHorizontalScrollIndicator:YES];

为此,您需要通过这种方式将 UIScrollView 的 IBOutlet 属性放入您的 *.h 文件中:

IBOutlet UIScrollView *scroll;

然后从 Storyboard 连接它。

或者,

您可以在 *.m 文件中使用此方法:

-(void)viewDidLayoutSubviews  
[scroll setContentSize:CGSizeMake(320, self.view.frame.size.height* 1.5)]; 
// this will pick height automatically from device's height and multiply it with 1.5

这两种解决方案都适用于 xcode-5、xcode-6、xcode-6.1、xcode-6.2

斯威夫特: 您可以将此快速代码用于类似类型的问题:

override func viewDidLayoutSubviews() 
    super.viewDidLayoutSubviews()
    scrollView.contentSize = CGSize(width:10, height:10)

【讨论】:

这个问题是 2013 年提出的,您现在正在回答吗? :|还有一个接受... @Lord:上周我也遇到了同样的问题。这就是为什么我不仅添加了 Obj-C,还添加了 Swift 修复。 老问题也可以解答。

以上是关于目标 - C UIScrollView 不能水平工作的主要内容,如果未能解决你的问题,请参考以下文章

水平展开的uiscrollview还是uitableview?

UIScrollview不会水平滚动

检测用户何时中断 UIScrollView 动画

用于水平滚动的 UIScrollView 内的 UITableView 无法按预期工作

目标 C:使用 UIScrollview 改变方向

无法单击 UIScrollview 目标上的按钮 - C