2013-09-26 34 views
4

有誰知道如何從本機iOS7天氣應用程序重現類似效果?iOS7狀態欄像原生天氣應用程序

基本上,狀態欄會繼承下面的視圖背景,但內容不會顯示出來。 此外,只有在某些內容處於底層時,纔會在狀態欄的20像素高度之後繪製1像素線。

enter image description here

+1

我的猜測是,它沒有具體狀態欄的效果,而是他們正在做一個自定義的過渡時的UITableView滾動了(基本上是透明狀態欄)。 – Ian

+0

這就是我的想法。 但是,你怎麼能隱藏/掩蓋細胞內容? – DZenBot

+0

你能否達到效果,我也在尋找答案。 – Mark

回答

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

+0

什麼是clipHeightLayoutConstraint – AVEbrahimi

+0

@Avebrahimi希望我幫助你通過電子郵件。 – invoodoo

1

您可以通過設置掩碼錶視圖的層做到這一點。但是,您將無法在單元格中呈現動畫,但可以在表格視圖後面自行完成這些動畫,並使用表格視圖的scrollview委託方法跟蹤它們的移動。

這裏是CALayer口罩一些信息: http://evandavis.me/blog/2013/2/13/getting-creative-with-calayer-masks

+0

聽起來像一個非常體面的解決方案,並且是一個很好的挑戰! 但我想知道,如果我在桌子視圖的圖層上應用蒙版,它也會掩蓋單元格的背景嗎? – DZenBot

+1

是的。正如我所說的,你必須自己管理細胞背景。我可以想到一個相當簡單的解決方案,其中一個單元格具有文本,另一個具有背景,當一個單元滾動時,另一個單元也滾動。 –

+1

我認爲這是通過掩蓋contentView和使用動畫離開backgroundView來完成的。 contentView中的所有內容都將隱藏起來。 – Mark