父 UIView 不包含/剪切子视图
Posted
技术标签:
【中文标题】父 UIView 不包含/剪切子视图【英文标题】:Parent UIView not containing/clipping subviews 【发布时间】:2014-11-19 14:38:27 【问题描述】:我正在尝试向 UITableView 添加页脚。该表是一个 cmets 表,页脚是用户输入他/她的 cmets 以进行发布的位置。所以很自然,我定义了一个 UIView 并在 UIView 内部添加了一个 UITextField 和一个 UIButton。 (左到右)。
问题是 UIView 不包含子视图。我希望孩子们在父页脚内垂直居中。我的代码如下。我究竟做错了什么?现在父视图显示为红色的薄板。与父级重叠的是高度大于父级的 UITextField 和 UIButon。
- (UIView *)tableView:(UITableView *)tv viewForFooterInSection:(NSInteger)section
static UIView *footer =nil;
if (nil == footer)
footer =[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 70)];
footer.backgroundColor=[UIColor redColor];
self.commentInputTextView=[[UITextView alloc]initWithFrame:CGRectMake(0, 0, 240, 50)];
self.commentInputTextView.delegate=self;
self.commentInputTextView.contentInset = UIEdgeInsetsMake(0, 0, 0, 0);
self.commentInputTextView.backgroundColor=[UIColor greenColor];
[footer addSubview:self.commentInputTextView];
UIButton *post = [[UIButton alloc] initWithFrame:CGRectMake(250, 0, 60, 50)];
post.backgroundColor=[UIColor blueColor];
[post setTitle:@"Post" forState:UIControlStateNormal];
[footer addSubview:post];
[footer sizeToFit];
return footer;
【问题讨论】:
【参考方案1】:将clipsToBounds
设置为是
footer.clipsToBounds = YES;
相关文档:
一个布尔值,用于确定子视图是否被限制在 视图的边界。
声明 SWIFT var clipsToBounds: Bool OBJECTIVE-C @property(nonatomic) BOOL clipsToBounds 讨论 设置这个值 为 YES 会导致子视图被裁剪到接收器的边界。如果 设置为 NO,其框架超出可见范围的子视图 接收器未剪辑。默认值为 NO。
导入语句导入 UIKit
可用性 适用于 ios 2.0 及更高版本。
要调整页脚的大小,您必须重写 UITableViewDelegate
方法来设置页脚高度:
(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section 参数 tableView 请求此信息的表视图对象。第一个索引 标识 tableView 部分的数字。返回值 A 非负 指定高度(以磅为单位)的浮点值 部分的页脚。
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UITableViewDelegate_Protocol/index.html#//apple_ref/occ/intfm/UITableViewDelegate/tableView:heightForFooterInSection:
【讨论】:
剪辑到边界很好,但是我的子视图在父slap中显示为平板。我需要父母的观点来包容孩子。无论如何,显示的高度可能是 10 而不是 70。我该如何解决这个问题?以上是关于父 UIView 不包含/剪切子视图的主要内容,如果未能解决你的问题,请参考以下文章
UIView clipToBounds 没有停止子视图接收父视图之外的触摸
如何将触摸事件从 ScrollView 子视图传递到它的父视图