有谁知道我该如何从本地的iOS7天气应用中重现类似的效果?
基本上,状态栏会继承其下方的视图背景,但不会显示内容。
同样,仅在底层内容有底线的情况下,才在状态栏高度20像素之后绘制1像素线。

最佳答案

最好的办法是通过视图的clipSubview实现它。您将内容放入视图,并对左/右/下和高度进行约束。您检查的滚动视图的高度是该单元格的位置为负,然后您开始更改内容(剪辑)视图的高度以获得所需的效果。

这是一个真正的应用程序,您可以从www.fancyinteractive.com下载并查看。下次更新时将立即提供此功能。

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
NSArray *visibleCells = [convertorsTableView visibleCells];

if (visibleCells.count) {
    for (CVConverterTableViewCell *cell in visibleCells) {
        CGFloat positionYInView = [convertorsTableView convertRect:cell.frame toView:self.view].origin.y;

        [self clipLayoutConstraint:cell.clipHeightLayoutConstraint withPosition:positionYInView defaultHeight:cell.frameHeight];

        [cell.converterLabel layoutIfNeeded];
        [cell.iconImageView layoutIfNeeded];
    }
}

[self checkStatusBarSeperator:scrollView.contentOffset.y];
}

- (void)clipLayoutConstraint:(NSLayoutConstraint *)constraint withPosition:(CGFloat)position defaultHeight:(CGFloat)defaultHeight {
if (position < 0) {
    constraint.constant = (defaultHeight - -position - 20 > 10) ? defaultHeight - -position - 20 : 10;
} else
    constraint.constant = defaultHeight;
}

09-06 01:50