iphone - iOS : how to change the size of the UIScrollView content?

标签 iphone objective-c uiscrollview

我现在正在尝试创建自己的文本面板(带有代码突出显示等)。

事实上一切都准备好了,除了一件事——滚动

我做了什么: 创建了 UIScrollView 并使用 Interface builder 将我自己的 View 作为 subview 插入。

ViewController viewDidLoad 方法中,我将初始 textfield 大小指定为 UIScrollView 内容大小。

当用户在我的文本字段中输入过多内容时。我调用委托(delegate)(即 ViewController)来更改大小。 为此,我只需编写

[scrollView setContentSize:newSize];

我得到的是 ScrollView 的增加,而不是我的文本字段 - 只出现空行。我想我也需要设置 View 的大小,但我不知道如何...

我的问题的第二部分: 每次我调用 [textField setNeedsDisplay] 时,它都会调用 drawRect: 方法,其中的矩形等于我 View 的整个大小(比它的可见部分大得多)。如果我尝试使用我的 View 修改大小超过 3 mb 的文件,它会是什么样子?我怎样才能强制它只重绘可见部分?

感谢您的关注。

最佳答案

第 1 部分:

ScrollView 的内容大小实际上与其包含的 View 的大小或位置无关。如果要更改内容 View 的大小以及 ScrollView 的内容,则需要调用两种不同的方法。

CGSize newSize;
UIScrollView *scrollView;
// assume self is the content view
CGRect newFrame = (CGRect){CGPointZero,newSize}; // Assuming you want to start at the top-left corner of the scroll view. Change CGPointZero as appropriate
[scrollView setContentSize:newSize]; // Change scroll view's content size
[self setFrame:newFrame]; // Change views actual size

第 2 部分:

setNeedsDisplay 将整个 View 标记为需要显示。要使其仅显示可见部分,您需要使用 setNeedsDisplayInRect:visibleRect
假设 View 位于左上角(其框架的原点为 0)并且 ScrollView 不允许缩放,则可以使用 ScrollView 的内容偏移量和边界大小找到可见矩形。

CGRect visibleRect;
visibleRect.origin = [scrollView contentOffset];
visibleRect.size = [scrollView bounds].size;
[self setNeedsDisplayInRect:visibleRect];

如果只有部分变化,您也可以选择绘制可见矩形的一部分。

关于iphone - iOS : how to change the size of the UIScrollView content?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5464550/

相关文章:

ios - 快速禁用 UIScrollView 中的垂直滚动?

ios - 如何真正清除 UITextView...

iphone - iPhone 的可重用 Web 服务代码

ios - Xcode、UIscrollView 和分页

ios - 如何在子类中重新实现属性 getter 方法?

ios - 如何使用 Facebook 延迟深度链接功能进行新安装并在将 iOS 应用程序发布到 AppStore 之前对其进行测试?

objective-c - 在 iOS 8/Xcode 6 GM Seed 上使用自动布局调整大小时 UIScrollView 中断

iPhone 应用程序构建到模拟器,不会构建到设备

ios - Siri - Lang Swift 3,INPayBillIntent 不工作,Siri 说 "You will have to continue in DemoApp, Would you like to open it?"

ios - 如何在 UIImageView 中的 UIImage 上绘制三角形