带有自定义 selectedBackgroundView 的 UITableViewCell,它比 UISplitViewController 上的主视图控制器更宽
Posted
技术标签:
【中文标题】带有自定义 selectedBackgroundView 的 UITableViewCell,它比 UISplitViewController 上的主视图控制器更宽【英文标题】:UITableViewCell with a custom selectedBackgroundView that is wider than the master view controller on a UISplitViewController 【发布时间】:2013-04-08 19:58:44 【问题描述】:我有一个 iPad 应用程序,其 UISplitViewController 始终显示在风景中。它的主控制器是 UITableViewController。
我想让这个 UITableViewController 上的单元格的 selectedBackgroundView 溢出到细节 ViewController 中。像这样的:
我怎样才能做到这一点? 如果我尝试设置红色箭头图像(即 342 像素宽),它会被调整为 320 像素。 我还尝试继承 UIImageView 并覆盖 setFrame 以忽略任何尝试调整图像大小的调用,但仍然没有运气。
有什么想法吗?
【问题讨论】:
尝试将您能想到的所有视图上的所有clipsToBounds
属性设置为NO
。一旦你得到了一些有用的东西,就把它们一个一个地取下来,直到你只剩下实现你的效果所需的最低限度的定制。
成功了!非常感谢:) 我会在答案中发布我更新的代码
【参考方案1】:
(于 2013 年 10 月 1 日更新,使其适用于 ios7)
感谢 Erway Software 用户帮助我。
这是我如何让代码工作的方法:
在 UITableViewController 上:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
// ...
UITableViewCell *cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"someId"];
UIImage *image = [UIImage imageNamed:@"image_name"];
SelectionImageView *imageView = [[SelectionImageView alloc] initWithImage:image];
[cell setSelectedBackgroundView:imageView];
[tableView setClipsToBounds:NO];
[[[cell contentView] superview] setClipsToBounds:NO];
// ...
这里是 SelectionImageView 的代码:
@interface SelectionImageView : UIImageView
@end
@implementation SelectionImageView
- (void)setFrame:(CGRect)frame
// 342 is the width of image_name
if (frame.size.width == 342.f)
[super setFrame:frame];
@end
【讨论】:
以上是关于带有自定义 selectedBackgroundView 的 UITableViewCell,它比 UISplitViewController 上的主视图控制器更宽的主要内容,如果未能解决你的问题,请参考以下文章
自定义 Combobox 控件自定义数据源,带有自定义 displaymember 和 valuemember