2016-11-02 39 views
5

Bu benim bakış denetleyicisi ne olması gerektiğini:Görünüm denetleyicisi kökeni bu bilgileri sunum her zaman değiştirir

enter image description here

Bu bazen budur:

enter image description here

ben daire içinde bir görünüm denetleyicisini görüntülemek ister, ancak, hemen hemen her zaman daire içinde görünüm denetleyicisi (ResultViewController) sunuluyor, özellikleri farklı değil, ancak özellikleri değişmiyor. İşte benim kodum:

func openCircle(withCenter center: CGPoint, dataSource: ([Items], Int, String)){ 
    self.addCircle(withCenter: center, dataSource: dataSource) 
} 

func addCircle(withCenter circleCenter: CGPoint, dataSource: ([Items], Int, String)) { 

    let longerSide = fmax(view.frame.size.height, view.frame.size.width) 
    let shorterSide = fmin(view.frame.size.height, view.frame.size.width) 

    let circleRadius = longerSide/2 
    var resultViewOrigin = CGPoint() 
    var resultViewSize = CGSize() 

    if UIDevice.current.userInterfaceIdiom == .pad { 

     let rectWidth = shorterSide/2 
     let rectHeight = sqrt(abs(circleRadius * circleRadius - rectWidth * rectWidth)) + view.frame.size.height - circleCenter.y 
     resultViewSize = CGSize(width: rectWidth, height: rectHeight) 
     resultViewOrigin = CGPoint(x: (view.frame.size.width - rectWidth)/2, y: view.frame.size.height - rectHeight) 

    } else { 
     resultViewOrigin = CGPoint(x: 0.0, y: 0.0) 
     resultViewSize = CGSize(width: view.frame.size.width, height: view.frame.size.height) 
    } 

    let resultViewController = UIStoryboard(name: "Main", bundle: Bundle.main).instantiateViewController(withIdentifier: "ResultVC") as! ResultViewController 
    resultViewController.transitioningDelegate = self 
    resultViewController.modalPresentationStyle = .custom 
    resultViewController.dataSource = dataSource 
    resultViewController.view.frame = CGRect(origin: resultViewOrigin, size: resultViewSize) 

    transition.circle = UIView() 
    transition.startingPoint = circleCenter 
    transition.radius = circleRadius 
    transition.circle.frame = circleFrame(radius: transition.radius, center: transition.startingPoint) 

    present(resultViewController, animated: true) 
} 

iPhone'da iyi çalışıyor, iPad'de değil, sorun nedir?

+0

İstenilen ekranın ekran görüntüsünü ekleyebilir misiniz? (iPhone'dan) – Danoram

+0

@Danoram Gecikmiş cevap için özür dileriz, lütfen düzenle –

+0

Daha iyi fotoğraflar çekebilir misiniz? Sorunun ne olduğunu anlayamıyorum. Ve muhtemelen onları vurgulamak? – Honey

cevap

3

Sorunu buldum, aslında Düzenli-Normal boyut sınıfında bu soruna neden olan eksik bir kısıtlama var, yanlış yerleştirme için kullanılan kısma yerleştirme kısmına bir boşluk ekleyerek düzeltdim.

Fikriniz için herkese teşekkürler.

1

Görünüm denetleyicisini sunmak yerine konteyner görünümünü kullanabilirsiniz. Bunları program aracılığıyla veya arayüz oluşturucuda oluşturabilirsiniz (bkz. Apple docs).

+0

olarak resultViewController çerçevesini ayarladıktan sonra onun görünümün merkezini ayarlayabilirsiniz konteyner görünümü normal bir görünümdür. Görünüm animasyonlarıyla bunları gösterebilir veya gizleyebilirsiniz. Neden sizin için uygun değil? –

+0

The optimal çözüm Ben sunulan görünüm denetleyiciye bağlı animasyonlar sahip değildir – clemens

+0

Sadece animasyonlar, veri ve bağlantıların da çok bir kap görünümüne görünümü denetleyicisi göç bir kap görünümü denetleyicisi olan bir görünümü içeren –