0

更新我有一个网格 ( SubViewGrid),我在UIView. 我需要能够防止最左边的列(时间)水平滚动,而顶行(员工姓名)垂直滚动。

数据在 中绘制SubViewData,在 中UIScrollView。我想我UIScrollView在这里需要两 (2) 个,一个用于SubViewGrid,另一个用于SubViewData. 问题是:如何同步它们来完成用户的需求?

在此处输入图像描述

更新 这是修订的结构:

修改后的图像

@property (nonatomic, weak) IBOutlet UIScrollView *schedScrollView;  
@property (nonatomic, weak) IBOutlet UIView * topGridView;  
@property (nonatomic, weak) IBOutlet UIView * leftGridView;  
@property (nonatomic, weak) IBOutlet UIView * topLeftView;    // TODO
4

1 回答 1

1

请参阅类似问题的回答。

我认为这就是您需要解决此问题的方式,将固定标题放在数据的单独子视图中。然后将固定子视图的框架设置为scrollViewDidScroll:在滚动视图的顶部(或侧面)创建固定标题的外观。

例如:将header subview的初始帧设置为(0, 0, width, height),然后在scrollViewDidScroll:设置帧为(0, contentOffset.y, width, height)

编辑:这是一个例子。在下面的屏幕截图中,我在UIScrollView. 然后在scrollViewDidScroll:我设置子视图的框架以分别将它们固定在顶部、左侧和左上角。

带有固定标题的网格
在此处输入图像描述

视图控制器.h:

@interface ViewController : UIViewController <UIScrollViewDelegate>

@property (nonatomic, weak) IBOutlet UIScrollView * theScrollView;
@property (nonatomic, weak) IBOutlet UIImageView * topView;
@property (nonatomic, weak) IBOutlet UIImageView * leftView;
@property (nonatomic, weak) IBOutlet UIView * topLeftView;

@end

视图控制器.m:

#import "ViewController.h"

@implementation ViewController

@synthesize theScrollView, topView, leftView, topLeftView;

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.theScrollView.delegate = self;
}

- (void)viewDidLayoutSubviews
{
    [super viewDidLayoutSubviews];
    self.theScrollView.contentSize = CGSizeMake(502, 401);
}

#pragma mark UIScrollViewDelegate methods

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    CGRect tempFrame = self.topView.frame;
    tempFrame.origin.y = scrollView.contentOffset.y;
    self.topView.frame = tempFrame;

    tempFrame = self.leftView.frame;
    tempFrame.origin.x = scrollView.contentOffset.x;
    self.leftView.frame = tempFrame;

    tempFrame = self.topLeftView.frame;
    tempFrame.origin.x = scrollView.contentOffset.x;
    tempFrame.origin.y = scrollView.contentOffset.y;
    self.topLeftView.frame = tempFrame;
}

@end

这就是它的全部!希望这对您有所帮助。

于 2013-06-17T03:15:44.467 回答