2017-01-26 4 views
3

설명에 iOS App에서 작업 중이고 Today Extension Widget을 만들고 싶습니다. 내 문제는 내가 높이를 200으로 변경하고 싶다는 것입니다. 내가 찾은 유일한 해결책을 연구 한 후에 preferredContentSize 속성을 사용하는 것이지만 이것은 나에게 효과가 없었습니다.Swift Today Extension preferredContentSize 크기를 조정하지 않음

tableView를 추가하고 싶습니다. 완전히 표시되도록하고 싶습니다. viewDidLoad 메서드를 추가하여 테이블을 만들고 추가하는 위치를 확인할 수 있습니다. 아이폰 OS (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

직접 아이폰 OS 10 이후

작동하지 preferredContentSize.height는 오늘 확장을 보여주기 위해 두 가지 유형이 있습니다

경우 1 더보기 (확장 유형, 사용자 정의 높이를 설정할 수 있습니다)

경우이 개 표시 적은

enter image description here

(컴팩트 타입은 기본 hegiht있다)

What's new in 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 
    } 

아이폰 OS (10) 아이폰 OS 10 이전 버전과에 대한 높이를 제공해야하며, 사용자 정의 높이

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
관련 문제