2017-01-26 9 views
3

が、私はiOSのアプリケーションに取り組んでいますと言い、サイズ変更し、それのために今日拡張ウィジェットを作成したいではありません。私の問題は、高さを200に変更したいということです。私が見つけた唯一の解決策を研究した後、preferredContentSize属性を使用することでしたが、これは私のためには機能しませんでした。スウィフト今日拡張preferredContentSizeは、その説明のような

私はそれににtableViewを追加したいと私はそれが十分に示されbeshouldしたかったです。 viewDidLoadメソッドを追加して、テーブルが作成され追加された場所を確認できます。 preferredContentSize.heightを設定するiOSの10で

override func viewDidLoad() { 
    super.viewDidLoad() 

    let myDefaults = UserDefaults(suiteName: "group.com.iOSApp")! 
    let eventData = myDefaults.object(forKey: "events") 

    if eventData != nil { 
     shownEvents = NSKeyedUnarchiver.unarchiveObject(with: eventData as! Data) as! [Event] 
    } 

    eventTable = UITableView() 
    eventTable.register(TodayViewCell.self, forCellReuseIdentifier: "cell") 
    eventTable.separatorColor = UIColor.primary() 
    view.addSubview(eventTable) 
    eventTable.translatesAutoresizingMaskIntoConstraints = false 

    var tempX = NSLayoutConstraint(item: eventTable, attribute: .leading, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: .leading, multiplier: 1, constant: 0) 
    var tempY = NSLayoutConstraint(item: eventTable, attribute: .top, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: .top, multiplier: 1, constant: 0) 
    NSLayoutConstraint.activate([tempX, tempY]) 

    tempX = NSLayoutConstraint(item: eventTable, attribute: .trailing, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: .trailing, multiplier: 1, constant: 0) 
    tempY = NSLayoutConstraint(item: eventTable, attribute: .bottom, relatedBy: NSLayoutRelation.equal, toItem: view, attribute: .bottom, multiplier: 1, constant: 0) 
    NSLayoutConstraint.activate([tempX, tempY]) 


    eventTable.delegate = self 
    eventTable.dataSource = self 

    eventTable.reloadData() 

    preferredContentSize.height = 200 


} 

答えて

6

直接iOSの10後

を動作しない、今日の拡張子

ケース1つのショーもっと表示する2つのタイプがあります(拡大のタイプは、カスタムの高さを設定することができます)

ケース2ショー以下(コンパクト型は、デフォルトhegihtを有する)

enter image description here

What's new in iOS 10

ので、あなたは、iOS 10のための高さ、以前のバージョンを提供し、iOSの10

if #available(iOSApplicationExtension 10.0, *) { 
     //setup display mode (show more(.expended) or show less(.compact)) 
     extensionContext?.widgetLargestAvailableDisplayMode = .expanded 
    } else { 
     // Fallback on earlier versions 
     preferredContentSize.height = 200 
    } 

とカスタムの高さのために

func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) {

@available(iOSApplicationExtension 10.0, *) 
func widgetActiveDisplayModeDidChange(_ activeDisplayMode: NCWidgetDisplayMode, withMaximumSize maxSize: CGSize) { 
    switch activeDisplayMode { 
    case .expanded: preferredContentSize.height = 200 
    case .compact: preferredContentSize = maxSize 
    } 
} 
を実装shouldeための必要があります
関連する問題