Rah*_*yas 87 objective-c uiscrollview ios
我有一个UIView像iPhone的Springboard.我使用UIScrollView和创建它UIButtons.我想禁用所述scrollview上的水平滚动.我只想垂直滚动.我该如何做到这一点?
Dav*_*ong 123
你必须设置的contentSize属性UIScrollView.例如,如果您UIScrollView的宽度为320像素(屏幕宽度),那么您可以这样做:
CGSize scrollableSize = CGSizeMake(320, myScrollableHeight);
[myScrollView setContentSize:scrollableSize];
Run Code Online (Sandbox Code Playgroud)
在UIScrollView这时只会垂直滚动,因为它已经可以水平显示的一切.
Din*_*aja 86
更新:( @EranMarom指出他的评论后)
您可以在方法中停止水平滚动或垂直滚动ScrollViewDelegate.这是怎么样的,
停止水平滚动:
如果要水平滚动,则需要增加contentOffset.x.防止停止滚动视图在水平方向滚动.
- (void)scrollViewDidScroll:(UIScrollView *)sender {
sender.contentOffset.x = 0.0
}
Run Code Online (Sandbox Code Playgroud)
停止垂直滚动:
如果要垂直滚动,则需要增加contentOffset.y.防止停止滚动视图在垂直方向滚动.
- (void)scrollViewDidScroll:(UIScrollView *)sender {
sender.contentOffset.y = 0.0
}
Run Code Online (Sandbox Code Playgroud)
上面的代码可以防止a 和a中的更改,x并导致停止方法中的滚动.yscrollview contentOffsetscrollViewDidScroll:
Mir*_*ner 10
自从iOS7使用
self.automaticallyAdjustsScrollViewInsets = NO;
Run Code Online (Sandbox Code Playgroud)
//并创建3页的页面滚动条
self.pageView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];
[self.pageView setContentSize:CGSizeMake(self.view.frame.size.width*3, self.view.frame.size.height)];
[self.pageView setShowsVerticalScrollIndicator:NO];
[self.pageView setPagingEnabled:YES];
[self.view addSubview:self.pageView];
Run Code Online (Sandbox Code Playgroud)
Dan*_*ieu 10
迅捷解决方案
创建两个出口,一个用于视图,另一个用于滚动视图:
@IBOutlet weak var myView: UIView!
@IBOutlet weak var scrollView: UIScrollView!
Run Code Online (Sandbox Code Playgroud)
然后在viewDidLayoutSubviews中添加以下代码:
let scrollSize = CGSize(width: myView.frame.size.width,
height: myView.frame.size.height)
scrollView.contentSize = scrollSize
Run Code Online (Sandbox Code Playgroud)
我们所做的是收集视图的高度和宽度,并设置scrollViews内容大小以匹配它.这将阻止您的滚动视图水平滚动.
更多想法:
CGSizeMake使用CGFloats获取宽度和高度.您可能需要使用UIScrollViews现有高度作为第二个参数.看起来像这样:
let scrollSize = CGSize(width: myView.frame.size.width,
height: scrollView.contentSize.height)
Run Code Online (Sandbox Code Playgroud)
就我而言,使用Swift 4.2,您可以使用:
禁用垂直滚动:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
scrollView.contentOffset.y = 0.0
}
Run Code Online (Sandbox Code Playgroud)
禁用水平滚动:
func scrollViewDidScroll(_ scrollView: UIScrollView) {
scrollView.contentOffset.x = 0.0
}
Run Code Online (Sandbox Code Playgroud)
在我的例子中,contentView 的宽度大于 UIScrollView 的宽度,这就是不需要的水平滚动的原因。我通过将 contentView 的宽度设置为等于 UIScrollView 的宽度来解决这个问题。
希望它可以帮助某人
| 归档时间: |
|
| 查看次数: |
106612 次 |
| 最近记录: |