ste*_*918 13 iphone uiscrollview uiview ios
我正在尝试使用UIScrollView,似乎有一些基本的东西,我只是不理解.
假设我想在我的iphone应用程序中使用UIScrollView.我有一个视图,其中包含320x700的按钮.显然,这对于320x480的iPhone来说太大了.所以我知道我必须使用UIScrollView.但是,这是我应该创建对象的顺序
这是正确的吗?
这有效,但对我来说没有意义.我认为View应该是画布,我在其中添加了所有的UI元素.我希望iPhone应用程序的"画布"为320x700,我希望能够将我的按钮等放在这个320x700画布上.但是,如果我不将UIScrollView的大小更改回320x480,它将不会滚动,因为我需要将UIScrollView的内容大小设置为大于其大小.
但是,如果我将UIScrollView的大小设置为320x480,那么我在Interface Builder中看不到屏幕和480到700之间的按钮!因此,似乎我应该进行所有编辑并将所有UI元素添加到UIScrollView,然后将其设置回320x480!
有没有其他方法可以做到这一点更有意义?在理解这应该如何工作的过程中,我错过了什么?
rob*_*off 43
以下是您可能更喜欢的另一种方法:
UIScrollView在笔尖中创建一个顶级对象.将其大小设置为屏幕大小(320x460)或只需打开"模拟指标"下的状态栏.delegate插座连接到文件的所有者.view出口设置为滚动视图.UIView作为另一个在你的笔尖顶级对象.这将是您的内容视图.contentView在视图控制器(文件所有者)中创建一个强大的(或保留,如果不使用ARC)插座,并将其连接到内容视图.在视图控制器中viewDidLoad,执行以下操作:
- (void)viewDidLoad {
[super viewDidLoad];
[self.view addSubview:self.contentView];
((UIScrollView *)self.view).contentSize = self.contentView.frame.size;
}
Run Code Online (Sandbox Code Playgroud)在视图控制器中viewDidUnload,执行以下操作:
- (void)viewDidUnload {
self.contentView = nil;
[super viewDidUnload];
}
Run Code Online (Sandbox Code Playgroud)你是对的,View是添加所有UI元素的画布.界面构建器起初有点奇怪,但你会习惯它,这就是它的工作方式.
您必须坚持必须调整ScrollView的大小.您应该这样想:ScrollView具有帧大小和内容大小.它的构建方式是,如果内容大小大于帧大小,那么它将滚动.您必须在界面构建器中使框架尽可能大,以便您可以定位内部元素.当您运行应用程序时,您应调整滚动框的大小以适应iPhone的屏幕分辨率.控件的框架大于屏幕是没有意义的.
--------------------------------------------
| | | |
| | | |
| | | |
| | | |
| | |<------------------ iPhone Screen frame
| | | |
| | | |
| | | |
| | | |<------- ScrollView Content size
| | | |
| | | |
| | |<----------------- ScrollView Frame Size
| | | |
| | | |
| | | |
| | | |
| | | |
| ------------------------ |
| |
| |
| |
--------------------------------------------
Run Code Online (Sandbox Code Playgroud)
我希望这种表示方式能让人们更清楚地知道应该如何工作.换句话说,滚动框架就是你可以看到内容的洞,如果整体和内容一样大,那么你就没有必要滚动cos你可以看到它.
我建议也尝试在代码中编写组件而不使用IB来更好地理解.
| 归档时间: |
|
| 查看次数: |
29809 次 |
| 最近记录: |