我是iPhone开发的新手。
我知道可能有与我的问题有关的答案,但没有人帮助过我。
根据标题我有UITableView的样式分组。 我想设置背景图片,但我无法正确设置。
但问题在于我的截图中的描述。
我想显示仅cells
UITableView
self.tblView = [[UITableView alloc]initWithFrame:CGRectMake(0, 125, 320, 320) style:UITableViewStyleGrouped];
UIImageView *bgTableImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0,0, 320, 320)];
bgTableImageView.image = [UIImage imageNamed:@"bgImage.png"];
self.tblView.backgroundColor=[UIColor clearColor];
[self.tblView setBackgroundView:bgTableImageView];
//self.tblView.backgroundView = nil;
// self.tblView.opaque = NO;
//self.tblView.bounces = NO;
//self.tblView.scrollEnabled = YES;
self.tblView.delegate=self;
self.tblView.dataSource=self;
self.tblView.separatorColor = [UIColor darkGrayColor];
self.tblView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
[self.view addSubview:self.tblView];
描述的图像视图区域(已分组)
这是我的代码:
UITableViewStyleGrouped
所有其他工作正常且正确,我只有如何设置{{1}}的背景图片的问题?
答案 0 :(得分:4)
试试这个:
UIImageView *av = [[UIImageView alloc] initWithFrame:CGRectMake(20, 20, 277, 58)];
av.backgroundColor = [UIColor clearColor];
av.opaque = NO;
av.image = [UIImage imageNamed:@"categorytab1.png"];
cell.backgroundView = av;
答案 1 :(得分:3)
使用以下代码insatnd of use UIImageView
。
self.tblView.backgroundView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"YourImage.png"]];
,否则
self.tblView.backgroundView.inputView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tblbg.png"]];
第二个选项(当{strong>不依赖 UITableView
样式)时,此选项很有用
1)更改UITableView
样式,style:UITableViewStylePlain
2)添加#import <QuartzCore/QuartzCore.h>
框架
3)更改UITableView
的框架,例如CGRectMake(10, "asYouNeed", 300, "asYouNeed")
4)给出UITableView
的圆角半径
self.tblView.layer.cornerRadius = 10; // set Radius as you need
并将UIImageView
设为BackGroundView
的{{1}}。 (按照您在本课题中提出的代码)
使用圆角创建上述步骤UITableView
。 我提及这里使用此代码时,如果您不依赖UITableView
样式,如果UITableView
对您很重要,那么此选项对您没有帮助。
谢谢:)
答案 2 :(得分:3)
首先,了解表格的工作原理:
UITableView
有背景资料。这就是你在细胞背后看到的。contentView
,backgroundView
,selectedBackgroundView
。backgroundView
显示在单元格的内容下,选中单元格后,将使用selectedBackgroundView
。contentsView
。背景与内容的分离使得表能够有效地动画未选择/选择的过渡。单元格进入编辑模式时也很重要 - 内容被缩小/移动,编辑控件(例如删除按钮或单元格选择)可以独立显示在内容上。separatorStyle
)。这就是为什么单元格总是比contentsView
高出至少1 px。其次,关于分组表如何工作的一些信息。
backgroundView
和backgroundColor
contentView
。单元格仍然与整个表格具有相同的宽度,但contentView
在左侧和右侧有一个偏移量(iPhone上大约10个点)。backgroundView
已修改,并包含绘制边框的图层,具体取决于单元格位置(第一个,最后一个和中间单元格不同)。边框的颜色由表格separatorColor
。可以在代码中修改所有内容!
如何删除边框的最简单方法之一是将separatorColor
设置为[UIColor clearColor]
。这将删除单元格分隔符,但您可以添加自己的分隔符,例如
cell = ...
UIView* separator = [[UIView alloc] init];
separator.backgroundColor = ...
separator.frame = CGRectMake(0.0f, table.bounds.size.width, table.rowHeight - 1.0f, 1.0f);
separator.autoresizingMask = (UIViewAutoresizingMaskFlexibleTopMargin | UIViewAutoresizingMaskFlexibleWidth);
[cell addSubview:separator]; //note we are adding it directly to the cell, not to contentsView
您也可以使用图像(UIImageView
)作为分隔符,而不是单色视图。
另一种方法是为每个单元格设置backgroundView
到nil
。
实际上,您可以完全忽略contentsView
并直接将所有内容添加到单元格中。然后,您可以自定义以下单元格方法,以便在状态发生变化时更新单元格。
- (void)setSelected:(BOOL)selected animated:(BOOL)animated {
//update the cell text colors, backgrounds etc for the selected/not selected state
//you don't have to call super
// (the default implementation changes between backgroundView and selectedBackgroundView)
}
- (void)setHighlighted:(BOOL)highlited animated:(BOOL)animated {
//update the cell text colors, backgrounds etc for the selected/not highlighted state
//you don't have to call super
// (the default implementation changes between backgroundView and selectedBackgroundView)
//by giving empty implementation, you will block highlighting of cells
}
- (void)setEditing:(BOOL)highlited animated:(BOOL)animated {
//you can use this method to add custom editing controls
}
- (void)willTransitionToState:(UITableViewCellStateMask)state {
//use this method to change the layout of your contents
//when the cells goes into one of the editing states
}
- (void)layoutSubviews {
//update the frames of cell contents to match the new cell size
//note that the cell doesn't have the correct size until it is added to the table,
//this method is called when the cell already has the final size
//you can also use this method to change the size/position of the `contentsView`
}
修改: 为了解决您的具体问题,最好的解决方案可能是:
backgroundView
并补充您自己的背景(例如,清晰的颜色,白色,从图案创建的颜色或UIImageView
到backgroundView
。backgroundView
,并将其替换为UIImageView
。第一个,最后一个和中间的单元格需要三个特殊图像。答案 3 :(得分:3)
如果您想制作自定义单元格用户界面,请尝试使用
_tblNews.backgroundColor = [UIColor clearColor];
_tblNews.backgroundView = nil;
_tblNews.separatorColor = [UIColor clearColor];
_tblNews.separatorStyle = UITableViewCellSeparatorStyleNone;
为您的单元格创建nib,因为您想要创建单元格并在数据源方法中加载该单元格。
for load xib
+ (id)loadNibNamed:(NSString *)NibName {
NSObject *cl = nil;
if (NSClassFromString(NibName) != nil) {
NSArray *arr = [[NSBundle mainBundle] loadNibNamed:NibName owner:self options:nil];
for (id cls in arr) {
if([cls isKindOfClass:NSClassFromString(NibName)])
{
cl = cls;
break;
}
}
}
return cl;
}
在xib中确保为单元格的可重用性设置标识符。 使用它你可以轻松地定制单元格布局。
答案 4 :(得分:2)
将UITableView
背景视图设为 nil ,使其透明。
[tableView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"backgroundImage.png"]]];
tableView.opaque = NO;
tableView.backgroundView = nil;
希望它能帮到你。
答案 5 :(得分:2)
你想这样吗
以下是代码: -
在任何地方设置UITableView的背景视图。我已经在viewDidload中完成了它。
[_tblView setBackgroundView:[[UIImageView alloc] initWithImage:[UIImage imageNamed:@"url.jpg"]]];
并在cellForRowAtIndexPath
中将tableViewCellBackground颜色设置为透明 static NSString *cellIdentifier=@"cellIdentifier";
UITableViewCell *cell=[tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell ==nil) {
cell=[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellIdentifier];
}
cell.backgroundColor=[UIColor clearColor];
cell.textLabel.text=@"goup styled";
return cell;
答案 6 :(得分:1)
请试试这个,
UIView *backgroundView = [[UIView alloc] init];
[backgroundView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"imageName.png"]]];
并在tableview中,请设置此属性。
UITableView *tableView = [[UITableView alloc] init];
[tableView setBackgroundView:backgroundView];
希望这适合你。