更改 UIScrollView 中的内容

发布于 2024-12-22 13:52:56 字数 121 浏览 0 评论 0原文

寻找最佳方法: 我有一个标签栏和一个导航栏。在导航栏下我放了三个按钮。 第一个用于项目描述,第二个应显示项目进度,第三个应显示项目任务。 在按钮下方我有一个内容的滚动视图。 根据使用的按钮切换/更改滚动视图内容的最佳方法是什么?

Looking for the best approach:
I have a tabbar and a navigationbar. under the navigationbar I put three buttons.
One for the projekt description, the next should show the project schedule and the third the project tasks.
Below the buttons I have a scrollview for the content.
What would be the best way to switch/change the content of the scrollview depending on, which button was used?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

倾其所爱 2024-12-29 13:52:56

我会构建 3 个不同的视图,当点击按钮时清除滚动视图,然后将新视图添加到滚动视图,然后调整滚动视图的内容大小。

i would build 3 different views, when the buttons tapped clear the scrollview then add the new view to the scroll view, then adjust the scrollview's content size.

a√萤火虫的光℡ 2024-12-29 13:52:56

UITextView 是 UIScrollView 的子类,因此自动实现滚动行为。您可以使用文本属性来设置显示的文本。

如果您想要显示的不仅仅是文本,您可以以编程方式创建自定义视图(或通过从 NIB 加载它),并在单击按钮时将其放入 UIScrollView 中。

UITextView is a subclass of UIScrollView and thus automatically implements scrolling behaviour. You can use the text property to set the text shown.

If what you want to show is not only textual, you can create a custom view programmatically (or by loading it from a NIB) and put it in the UIScrollView whenever a button is clicked.

时光倒影 2024-12-29 13:52:56

您可以使用 scrollRectToVisible,如下所示:

 -(void)scrollToIndex(UIButton*)sender{

    UIButton *btn = (UIButton*)sender;
    NSInteger *index = btn.tag;
    CGRect rect = CGRectMake(CGRectGetWidth(self.contentScrollView.frame)*index, 0,    CGRectGetWidth(self.contentScrollView.frame), CGRectGetHeight(self.contentScrollView.frame));
    [self.contentScrollView scrollRectToVisible:rect animated:YES];

}     

}

现在,如果用户想要手动滚动视图,最好处理其他选项:

- (void)scrollViewDidScroll:(UIScrollView *)sender {
    // Switch the currentDataView when more than 50% of the previous/next page is visible
    CGFloat pageWidth = sender.frame.size.width;
    int page = floor((sender.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    pageControl.currentPage = page;

   //You can also set the highlight of the button that relate to this view
}

You can use scrollRectToVisible, something like this:

 -(void)scrollToIndex(UIButton*)sender{

    UIButton *btn = (UIButton*)sender;
    NSInteger *index = btn.tag;
    CGRect rect = CGRectMake(CGRectGetWidth(self.contentScrollView.frame)*index, 0,    CGRectGetWidth(self.contentScrollView.frame), CGRectGetHeight(self.contentScrollView.frame));
    [self.contentScrollView scrollRectToVisible:rect animated:YES];

}     

}

Now, it os good to handle an other option if the user wants to manually scroll the view:

- (void)scrollViewDidScroll:(UIScrollView *)sender {
    // Switch the currentDataView when more than 50% of the previous/next page is visible
    CGFloat pageWidth = sender.frame.size.width;
    int page = floor((sender.contentOffset.x - pageWidth / 2) / pageWidth) + 1;
    pageControl.currentPage = page;

   //You can also set the highlight of the button that relate to this view
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文