根据我的项目,我将绑定(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/