在 UIScrollview 中设置 size 属性

Posted

技术标签:

【中文标题】在 UIScrollview 中设置 size 属性【英文标题】:Setting size property in UIScrollview 【发布时间】:2011-11-15 08:11:08 【问题描述】:

我想在另一个视图中创建一个滚动视图。我在 IB 中放置了一个 UIScrollview 元素,并在与主视图关联的视图控制器文件中声明了一个 UIScrollview。我还在视图控制器头文件中声明了一个属性,并在对应的实现文件中合成。

我是在应用委托还是在视图控制器中设置滚动视图的大小?如果我在视图控制器中设置它,我还需要为该实例执行分配和初始化命令吗?还是我依赖​​于由于滚动视图是属性而存在的 getter 和 setter 方法?

我应该补充一点,我只希望滚动视图占据主视图的一部分。

这是我的viewDidLoad 方法:

- (void)viewDidLoad

    [super viewDidLoad];

    [scrollView setFrame:CGRectMake(0, 44, 768, 1000)];
    [scrollView setContentSize:CGSizeMake(768, 1000)];
    // Do any additional setup after loading the view, typically from a nib.

IB 中 UIScrollview 的实际大小是 768 x 804,应该有一个垂直滚动条(scrollview 中的一些 UI 元素被剪裁了,所以如果这个视图设置正确,肯定应该有一个滚动条。 )

【问题讨论】:

您正在做一些语法错误。那是你得到expected identifier error的时候。重新检查代码。应该是[scrollView setFrame:CGRectMake(0, 44, 768, 1000)]; 我的整个viewDidLoad方法都在上面了,还有什么我忘记了吗? 视图实际上是滚动的,只是我运行应用时没有看到滚动条。 酷,太好了。从这里开始,我只是不明白为什么你的代码不起作用.. 【参考方案1】:

是的,您可以使用setFrame 设置scrollView 实例的frame 属性。

即无论您在 IB 中定义的帧大小如何,使用 [scrollView setFrame:CGFrameMake()]; 您都可以重新定义确切的宽度、高度和 x、y 坐标。

事实上,这就是在 ios 中创建动态视图的方式。

一旦您完全退出此视图,请确保您 deallocrelease 此 IB 实例,因为它会被定义为 retain

【讨论】:

我要在视图控制器文件中这样做吗? 是的,你应该在你的视图控制器文件中做。因此,基本上您正在更改在 IB 中定义和创建但链接到 UIScrollView 实例的变量的 UI 元素的尺寸。清楚吗? 哦,如果我使用 ARC,我不需要做 deallocrelease,对吧? 你可以在任何你想要改变滚动视图尺寸的地方进行。实际上在任何地方。所以要回答你的问题,是的,你可以在 loadViewviewDidLoad 或 ... 查看上面我的问题的补充,当我尝试使用setFrame时出现错误

以上是关于在 UIScrollview 中设置 size 属性的主要内容,如果未能解决你的问题,请参考以下文章

UIScrollView bounds.size

在 UIPageViewController 中设置 UIScrollView 的内容大小

如何在 swift 中设置 UIScrollView 内的全宽图像

在 UIScrollView 子类中设置 contentOffset 的正确位置在哪里?

尝试在 UIScrollview 中设置宽图像,高度固定

iOS - 如何在 UIPageViewController 中设置 UIScrollView 以在重新启用后开始滚动