【问题标题】:Objective - C UIScrollView not working horizontally目标 - C UIScrollView 不能水平工作
【发布时间】: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

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

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

【问题讨论】:

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

标签: iphone objective-c xcode uiscrollview xib


【解决方案1】:

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

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

- (void)viewDidLayoutSubviews
{
    [scroll setContentSize:CGSizeMake(700, 700)];
}

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

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

【讨论】:

    【解决方案2】:

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

    1. 在 Storyboard 或 NIB 中选择 ViewController
    2. 单击 Xcode 窗口右侧的“文件检查器”选项卡
    3. 在“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 修复。
    • 老问题也可以解答。
    猜你喜欢
    • 1970-01-01
    • 2015-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2015-11-10
    相关资源
    最近更新 更多