objective-c - UIViewController 的默认 View (如 UIScrollView)- 无法设置其内容偏移量

标签 objective-c ios cocoa-touch

根据我的项目,我将绑定(bind)到一个 UIViewController 的默认 View 从 UIView 更改为 UIScrollView,因为它必须更改其偏移量和内容大小。我从 UIView 更改为 UIScrollView 的方式是通过 Interface Builder > Custom Class

如果我想在 Controller 中以编程方式更改其偏移量和内容大小,除非我对其进行强制转换,否则无法以通常的方式完成

[((UIScrollView *)self.view) setContentSize:CGSizeMake(1024, 2000)];
[((UIScrollView *)self.view) setContentOffset:CGPointMake(0, 150)];

但是对于应用程序中的其他 UIScrollView,可以像其他任何一样更改它们的偏移量和内容大小,

// Assume that sv is scroll view object
[sv setContentSize:CGSizeMake(1027, 2000)];
[sv setContentOffset:CGPointMake(0, 150)];

当我打印 ScrollView 对象时,它显示为 UIScrollView

NSLog(@"%@", self.view);
NSLog(@"%@", [self.view class]);

-> <UIScrollView: 0x6d3d3f0; frame = (0 0; 1024 768); autoresize = RM+BM; layer = <CALayer: 0x6d52ce0>; contentOffset: {0, 0}>
-> UIScrollView

有谁知道我遗漏或忘记了什么而不是更改 View 的自定义类?

最好,谢谢你, tar

附言除了需要额外的代码外,一切正常。但是,我不能冒着将来可能出现错误的机会。这个client super 狂,不接受错误

最佳答案

另一种方法(可以避免强制转换)是在界面生成器中将 UIViewController 自定义类设置回 UIView。然后,插入一个新的 UIScrollView 作为 subview (只需在 Interface Builder 中拖放),通过 IBOutlet 将 UIScrollView 连接到 UIViewController 子类,如下所示:

@property (nonatomic, weak) IBOutlet UIScrollView *scrollView;

(当您连接 socket 时,XCode 应该为您生成属性声明)。

然后,在您的 UIViewController 子类中,您可以执行以下操作:

[[self scrollView] setContentSize:CGSizeMake(1024, 2000)];
[[self scrollView] setContentOffset:CGPointMake(0, 150)];

关于objective-c - UIViewController 的默认 View (如 UIScrollView)- 无法设置其内容偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10243973/

相关文章:

iphone - 关于核心数据模型关系

ios - 如何获取 XML 元素并存储它? objective-c

iphone - 尝试将代码抽象到库中,但我的代码无法正常工作,我不知道为什么

ios - 以编程方式将 iPhone 静音开/关。 (强制静音/取消静音)

objective-c - iOS13 UICollectionView 不考虑单元格委托(delegate)方法中返回的大小

objective-c - Cocoa:从另一个类触发 NSWindow makeKeyAndOrderFront 实例方法

iphone - UITableView 没有滚动到底部

IOS WebView App - 不同屏幕尺寸的不同 View

iphone - 如何将绘制的内容保存在 CGContext 中

iphone - 我如何知道我的应用程序即将变为非事件状态/进入后台状态?