web-dev-qa-db-ja.com

iOS 10の本日拡張コンパクトモードの高さ

コンパクトモードでiOS 10ウィジェットの高さを変更するのに苦労しています。

私が持っているのは空のウィジェットだけで、その中にビューはありません。それでも、コンパクトな高さに設定しても、それは無視されるようです。

これが私のコードです:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.

    [self.extensionContext setWidgetLargestAvailableDisplayMode:NCWidgetDisplayModeExpanded];

}

- (void)widgetActiveDisplayModeDidChange:(NCWidgetDisplayMode)activeDisplayMode withMaximumSize:(CGSize)maxSize{
    if (activeDisplayMode == NCWidgetDisplayModeCompact) {
        self.preferredContentSize = CGSizeMake(0, 50);
    }
    else{
        self.preferredContentSize = CGSizeMake(0, 200);
    }
}

これはベータ版ソフトウェアの問題ですか? Xcode 8ベータ版とiOS 10ベータ版7を使用しています。

17
Balázs Vincze

Cocoa Touchの新機能 WWDC 2016のセッションによると(44:00頃):

これで、ユーザー制御のサイズができました。 固定高さであるコンパクトモードと可変高さである拡張モード。

したがって、preferredContentSizeNCWidgetDisplayModeCompactの設定は完全に無視されているようです(固定サイズは110ptsのようです)。

20
spassas

In Swift 3:

次のTodayViewControllerのプロパティは、コンパクトモードの最大サイズを返します。

private var maxSizeForCompactMode: CGFloat {
    return extensionContext?.widgetMaximumSize(for: .compact).height ?? 0
}

1)表示モードをNCWidgetDisplayModeExpandedviewDidLoadに設定します

override func viewDidLoad() {
    super.viewDidLoad()
    self.extensionContext?.widgetLargestAvailableDisplayMode = NCWidgetDisplayMode.expanded
}

2)このプロトコルメソッドを実装する

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize){
    if (activeDisplayMode == NCWidgetDisplayMode.compact) {
        self.preferredContentSize = maxSize;
    }
    else {
        self.preferredContentSize = CGSize(width: 0, height: 200);
    }
}

iOS 10 Widget

7
Pranay

prefferedContentSizeviewDidAppear以降に設定します。ビューが表示される前にウィジェットのサイズが変更されると思います。 iPhoneの画面の端との間のギャップのため、ウィジェットの幅はSCREEN_WIDTHではありません。

0
iamhite