iOS7状态栏就像本机天气应用程序一样

时间:2013-09-26 14:48:14

标签: iphone ios objective-c ios7 statusbar

有谁知道如何从原生iOS7天气应用中重现类似效果?

基本上,状态栏会继承下面的视图背景,但内容不会显示。 此外,在状态栏的20像素高度之后绘制1像素线,仅当某些内容被底层填充时。

enter image description here

2 个答案:

答案 0 :(得分:3)

最好的方法是通过视图的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;
}

Starting Page

Scrolling first item

Scrolling second itme

答案 1 :(得分:1)

您可以通过将遮罩设置到表视图的图层来完成此操作。但是,您无法在单元格内渲染动画,但您可以在表格视图后面自己动画,并使用表格视图的scrollview委托方法跟踪它们的移动。

以下是CALayer个面具的一些信息: http://evandavis.me/blog/2013/2/13/getting-creative-with-calayer-masks