2016-09-25 83 views
2

我已經實現了新的widget爲iOS 10和我用下面的代碼來設置它的高度:iOS10部件「顯示更多」,「隱藏部分」錯誤

@available(iOSApplicationExtension 10.0, *) 
func widgetActiveDisplayModeDidChange(activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) { 
    if activeDisplayMode == NCWidgetDisplayMode.Compact { 
     self.preferredContentSize = CGSizeMake(0.0, 350.0) 
    } 
    else if activeDisplayMode == NCWidgetDisplayMode.Expanded { 
     self.preferredContentSize = desiredSize 
    } 

} 

而且it's工作正常,但我的問題是與「顯示更多」「顯示較少」按鈕。他們並不總是迴應,我經常不得不點擊一次以觸發它們。我錯過了什麼?我是否必須添加更多以上代碼來處理高度?

+0

你設置的值是無效的,並可能會造成問題。當顯示模式爲「.Compact」時,您應該使用'maxSize'變量,並確保您選擇的高度不大。此外,寬度爲0可能會導致錯誤,請使用視圖的寬度。 – EmilioPelaez

回答

1

有同樣的問題,我發現當我們點擊「顯示更多」,「顯示更少」按鈕時,沒有動畫。所以你可以嘗試添加這樣一個塊:

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize { 

    if (activeDisplayMode == NCWidgetDisplayModeCompact) { 
     [UIView animateWithDuration:0.25f 
         animations:^{ 
          self.preferredContentSize = yourFixSize;       }]; 
    } 
    else { 

      [UIView animateWithDuration:0.25f 
          animations:^{ 
           self.preferredContentSize = yourMaxSize; 
}]; 
     } 
} 

我以這種方式解決了這個錯誤。

2

我有同樣的問題,希望對大家有用,問題是,我已經更新了preferredContentSize即使小部件是在緊湊模式。

嘗試查看每一個地方,你更新preferredContentSize和更新的大小隻有在如果widgetActiveDisplayModeNCWidgetDisplayModeExpanded

+0

我通過使用堆棧視圖的高度約束來更新我的小部件的大小,而不是依賴preferredContentSize。儘管我在執行過程中根本沒有觸及該屬性,但我仍然收到錯誤消息。在「沒有活動的動畫塊!」之前,我也遇到了「無法繼承CoreMedia權限......(null)」錯誤!錯誤。 – valeCocoa

3

斯威夫特3的地方:

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) { 
    if (activeDisplayMode == NCWidgetDisplayMode.compact) { 
     UIView.animate(withDuration: 0.25, animations: {() -> Void in 
      self.preferredContentSize = yourFixSize 
     }, completion: nil) 

    } 
    else { 
     UIView.animate(withDuration: 0.25, animations: {() -> Void in 
     self.preferredContentSize = yourMaxSize 
     }, completion: nil) 
    } 
}