我正在尝试在我的分组UITableView后面添加一个视图。不幸的是,每当我滚动时,背景视图也会移动。即使我使用[self.view insertSubview:backgroundView belowSubview:_tableView]或[_tableView setBackgroundView:backgroundView],也会发生这种情况。为什么这个背景视图会滚动?另外,为什么我的tableView滚动,即使我已禁用滚动?这些是相关的吗?
在app Delegate中:
History *historyController = [[History alloc] init];
UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:historyController];
在History.m中:
- (void)viewDidLoad {
CGRect frame = self.view.frame;
frame.origin.x = 0;
frame.origin.y = 0;
_tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStyleGrouped];
_tableView.delegate = self;
_tableView.dataSource = self;
[_tableView setScrollEnabled:NO];
[_tableView setBackgroundColor:[UIColor clearColor]];
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
UIView *bg = [[UIView alloc] initWithFrame:frame];
[bg setBackgroundColor:[UIColor scrollViewTexturedBackgroundColor]];
UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"CenterFade.png"]];
iv.alpha = .750;
[bg addSubview:iv];
[iv release]; iv = nil;
[self.view addSubview:bg];
[self.view addSubview:_tableView];
[bg release]; bg = nil;
[_tableView release];
[super viewDidLoad];
}
答案 0 :(得分:1)
尝试
- (void)viewDidLoad {
CGRect frame = self.view.frame;
frame.origin.x = 0;
frame.origin.y = 0;
UIView *bg = [[UIView alloc] initWithFrame:frame];
[bg setBackgroundColor:[UIColor scrollViewTexturedBackgroundColor]];
UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"CenterFade.png"]];
iv.alpha = .750;
[bg addSubview:iv];
[iv release];
iv = nil;
_tableView = [[UITableView alloc] initWithFrame:frame style:UITableViewStyleGrouped];
_tableView.delegate = self;
_tableView.dataSource = self;
[_tableView setScrollEnabled:NO];
[_tableView setBackgroundColor:[UIColor clearColor]];
_tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
[bg addSubview:_tableView];
[_tableView release];
_tableView = nil;
[self.view addSubview:bg];
[bg release];
bg = nil;
[super viewDidLoad];
}
如果你的控制器是UITableViewController
,只需将其更改为UIViewController<UITableViewDelegate, UITableViewDatasource>
tableView
属性(它是相同的)
答案 1 :(得分:1)
设置[_tableView setBackgroundColor:[UIColor clearColor]];
然后将您的背景视图放在UIVableController视图层次结构中的UITableView下。
答案 2 :(得分:1)
我不知道为什么会这样,但出于某种原因,self.view是一个UITableView而不是UIView。创建一个新的UIView并将其设置为self.view解决了这个问题。我没有使用UITableViewController,而是使用UIViewController。不知道UITableView来自哪里!
答案 3 :(得分:0)
UITableView
具有backgroundView
属性。
夫特:
var backgroundView: UIView?
目标-C
@property(nonatomic, readwrite, retain) UIView *backgroundView
滚动tableView
时,不会移动此视图