'da dinamik bir öğeye alt görünüm eklendiğinde uygulama çöküyor Bu nedenle arkasında ne olduğunu ortaya çıkarmak üzere kaydırılabilen bir sürgü oluşturmak için UI Kit Dynamics kullanıyorum. UIPanGestureRecognizer'a bağlanan iki UIFieldBehaviour'su ve bunu başarmak için UICollisionBehaviour kullanıyorum. Arabirim Oluşturucu'daki yapı şu şekilde görünür: Here an image of my view hierarchyArabirim Oluşturucu
TrayContainerView uygulamasının kısıtlamaları vardır ve ayrıca DynamicAnimator'ım için referans görünümüdür. trayView, dynamicAnimator'ın üzerinde çalıştığı dynamicItem.
Ben bu noktada ben her o belirli ViewController benim app anahtarları Bu mesajı alır, Interface Builder içinden trayView bir subview eklenene kadar bu çalışıyor: nedeniyle yakalanmamış istisna 'Geçersiz Derneği' olarak
app Sonlandırma, reason: 'UIDynamicAnimator, en fazla 32 farklı alanı destekler'
Tuhaf olan şey, alt görünümü programsal olarak eklediğimde, düzen ile ilgili bazı sorunlar için iyi kaydetme işlemidir.
İşte benim dinamikleri için tuzak herhangi bir fikir büyük takdir
container = UICollisionBehavior(items: [self])
let boundaryWidth = UIScreen.mainScreen().bounds.size.width
container.addBoundaryWithIdentifier("upper", fromPoint: CGPointMake(0, offset), toPoint: CGPointMake(boundaryWidth, offset))
let boundaryHeight = self.superview!.frame.size.height + self.frame.size.height - self.layoutMargins.top
container.addBoundaryWithIdentifier("lower", fromPoint: CGPointMake(0,boundaryHeight), toPoint: CGPointMake(boundaryWidth,boundaryHeight))
tractorField = UIFieldBehavior.linearGravityFieldWithVector(CGVectorMake(0, 30))
tractorField.direction = CGVectorMake(0, -10)
let referenceRegion = (superview?.frame)!
let fieldCoefficient:CGFloat = 1
tractorField.region = UIRegion(size: CGSize(width: referenceRegion.width, height: referenceRegion.height*fieldCoefficient))
tractorField.position = CGPointMake((self.superview?.center.x)!, referenceRegion.height*fieldCoefficient/2)
tractorField.addItem(self)
gravityField = UIFieldBehavior.linearGravityFieldWithVector(CGVectorMake(0, 30))
gravityField.direction = CGVectorMake(0, 10)
gravityField.region = UIRegion(size: CGSize(width: referenceRegion.width, height: referenceRegion.height*fieldCoefficient))
gravityField.position = CGPointMake((self.superview?.center.x)!, referenceRegion.height + referenceRegion.height*fieldCoefficient/2)
gravityField.addItem(self)
animator.addBehavior(gravityField)
animator.addBehavior(tractorField)
dynamicItem = UIDynamicItemBehavior(items: [self])
animator.addBehavior(container)
animator.addBehavior(dynamicItem)
davranışlar.
Bu sorunu UIFieldBehaviour'un kullanımına daralttım. her ikisini de rahatsız etmek kazaları önleyecektir. UIGravityBehaviour'u merakla kullanmak, uygulamayı çökertmeyecek, ancak başka bir yerçekimi veya alan davranışı olmasa bile, "Animatör başına çoklu çekim davranışı tanımlanmamış ve gelecekte ortaya çıkabileceğini" belirten sürekli bir dizi günlük mesajı ile sonuçlanacaktır. –