目标 - 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?