如何在特定位置将视图添加到 ScrollView?

Posted

技术标签:

【中文标题】如何在特定位置将视图添加到 ScrollView?【英文标题】:How to add a View to a ScrollView at a specific position? 【发布时间】:2015-11-01 11:03:01 【问题描述】:

我有一个矩形大小为 (414,736) 的 UIView。我做了一个比UIView 宽50 高50 的ScrollView。当我将UIView 添加到ScrollView 时,UIView 保持水平状态OK,但在垂直方向上它位于ScrollView 的底部。所以我的滚动部分是顶部。但我希望UIView 留在顶部,底部成为滚动区域。 如何在ScrollView 上找到具有特定位置的UIView? 下面的代码展示了 ScrollView 是如何实现的。

    CGRect screenRect = [[UIScreen mainScreen] bounds];
    self.scrollView=[[UIScrollView alloc] initWithFrame:screenRect];
    self.scrollView.delegate = self;
    self.scrollView.clipsToBounds = YES;
    [self.scrollView addSubview:self.drawChart];
    self.scrollView.contentSize=CGSizeMake(screenRect.size.width+100,screenRect.size.height+50);
    self.scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
    self.scrollView.backgroundColor = [UIColor colorWithRed:0.564 green:0.439 blue:0.561 alpha:1];
    self.view=self.scrollView;

编辑:

- (void)viewDidLoad 
    [super viewDidLoad];
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    //Database
    dirPaths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    docsDir = [dirPaths objectAtIndex:0];
    // Build the path to the database file
    databasePath = [[NSString alloc]initWithString:[docsDir stringByAppendingPathComponent: @"RECORDS.db"]];
    //scroll view
    //
    self.scrollView=[[UIScrollView alloc] initWithFrame:screenRect];
    self.scrollView.delegate = self;
    self.scrollView.clipsToBounds = YES;

    [self.scrollView addSubview:self.drawChart];
    CGRect frame = self.drawChart.frame;
    frame.origin = CGPointZero;
    self.drawChart.frame = frame;
    self.scrollView.contentSize=CGSizeMake(screenRect.size.width+100,screenRect.size.height+50);
    self.scrollView.decelerationRate = UIScrollViewDecelerationRateFast;
    self.scrollView.backgroundColor = [UIColor colorWithRed:0.564 green:0.439 blue:0.561 alpha:1];
        self.view=self.scrollView;

谢谢

【问题讨论】:

【参考方案1】:

将图表视图添加到滚动视图后

[self.scrollView addSubview:self.drawChart];

执行以下操作:

CGRect frame = self.drawChart.frame;
frame.origin = CGPointZero;
self.drawChart.frame = frame;

【讨论】:

不,它不起作用。 self.drawChart.frame 有 (0,0) 原点,即使我没有实现它。 50 ,这是我为 ScrollView 添加的大小,使其大于 UIView。 您能以某种方式分享您的视图控制器中的代码吗? 让我们continue this discussion in chat。 是的,你说的是对的。只是我在drawchart中有一个错误,会造成一些偏移。

以上是关于如何在特定位置将视图添加到 ScrollView?的主要内容,如果未能解决你的问题,请参考以下文章

如何滚动到scrollview内recyclerview中的特定位置?

加载数据源后,如何将 HTML 元素添加到 kendo ui 的列表视图中的特定位置?

如何将imageView添加到collectionViewCell中的scrollView

如何在特定条件下将视图添加到另一个视图?

将视图动态添加到 ScrollView 内的 RelativeLayout

setContentOffset 到滚动视图中的 UIImage 位置