如果超出父视图边界,则会修剪iOS7的子视图

如果超出父视图边界,则会修剪iOS7的子视图,第1张

概述参见英文答案 > How to stop UITableView from clipping UITableViewCell contents in iOS 7                                    2个 我从苹果公司发布了新的UI信息 – 没有帮助. 现在让代码和屏幕截图向您展示我遇到的问题. 为了确保这不是我的错误代码,我创建了一个新项目,只有一个文件 – 一个 参见英文答案 > How to stop UITableView from clipping UITableViewCell contents in iOS 72个
我从苹果公司发布了新的UI信息 – 没有帮助.

现在让代码和屏幕截图向您展示我遇到的问题.
为了确保这不是我的错误代码,我创建了一个新项目,只有一个文件 – 一个在ID里面有一个tableVIEw的UIVIEwController.代表们已经确定.

我做了以下事情:

- (NSInteger)numberOfSectionsIntableVIEw:(UItableVIEw *)tableVIEw{    // Return the number of sections.    return 3;}- (NSInteger)tableVIEw:(UItableVIEw *)tableVIEw numberOfRowsInSection:(NSInteger)section{    return 3;}- (UItableVIEwCell *)tableVIEw:(UItableVIEw *)tableVIEw cellForRowAtIndexPath:(NSIndexPath *)indexPath{    static Nsstring *CellIDentifIEr = @"UItableVIEwCell";    UItableVIEwCell *cell = [tableVIEw dequeueReusableCellWithIDentifIEr:CellIDentifIEr];    if (cell == nil) {        cell = [[UItableVIEwCell alloc] initWithStyle:UItableVIEwCellStyleDefault reuseIDentifIEr:CellIDentifIEr];    }    cell.textLabel.text = [Nsstring stringWithFormat:@"%d",indexPath.row];    // Configure the cell...    UIVIEw * redVIEw = [[UIVIEw alloc] initWithFrame:CGRectMake(0,-10,100,20)];    redVIEw.backgroundcolor = [UIcolor redcolor];    [cell addSubvIEw:redVIEw];    return cell;}

视图在Grouped上设置.
让我们在iOS 6上运行它:

当然,Y的起源是否定的!
是的,它是,这是我想要实现的结果.
让我们看看它在iOS 7上显示的内容:

提示:如果我们将redVIEw添加到普通的UIVIEw中,则不会发生这种情况.

另一个提示:如果我将tableVIEw的背景颜色设置为蓝色,则各部分之间的灰线将为蓝色,而不是灰色(作为灰色不是设置标题的演示).
另一个提示:同样适用于ipad.

为什么在iOS 7中它会削减一切超出范围的内容?请帮忙!

解决方法 这是因为iOS 7对UItableVIEwCells的视图层次结构进行了一些更改.

它曾经是UItableVIEwCell视图 – >内容查看.

现在它更像是UItableVIEwCell视图 – > scrollVIEw – >内容查看.

解决方案是在scrollVIEw上设置clipsToBounds = NO(默认情况下设置为YES).实现这一目标的方法是通过supervIEw属性.

因此,基本上在iOS6和之前,为了允许内容溢出单元格范围,您可以:

self.clipsToBounds = NO;                        //cell's vIEwself.contentVIEw.clipsToBounds = NO;            //contentVIEw

在iOS7中,您还必须防止滚动视图不被剪切,因此您可以执行以下 *** 作:

self.clipsToBounds = NO;                        //cell's vIEwself.contentVIEw.clipsToBounds = NO;            //contentVIEwself.contentVIEw.supervIEw.clipsToBounds = NO;  //scrollVIEw

我使用的向后兼容解决方案是:

self.clipsToBounds = NO;self.contentVIEw.clipsToBounds = NO;if ([self.contentVIEw.supervIEw isKindOfClass:[NSClassFromString(@"UItableVIEwCellScrollVIEw") class]]) self.contentVIEw.supervIEw.clipsToBounds = NO;

请记住这是Hacky™,如果在iOS 8中视图层次结构再次发生变化,您可能会遇到麻烦.不幸的是,似乎Apple不希望我们将内容从UItableVIEwCells中溢出,因此AFAIK这是唯一可行的解​​决方案.

总结

以上是内存溢出为你收集整理的如果超出父视图边界,则会修剪iOS7的子视图全部内容,希望文章能够帮你解决如果超出父视图边界,则会修剪iOS7的子视图所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1105674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存