यदि मैं अपने विचारों में UIDynamicBehavior
किसी भी प्रकार का जोड़ता हूं, तो डिवाइस घुमाए जाने पर यह पूरी तरह से चीजों को तोड़ देता है। यहां बताया गया है कि यह चित्र (सही ढंग से प्रदर्शित) में है:यूआईडीएनेमिक्स और डिवाइस रोटेशन
और यहाँ यह परिदृश्य में है, सब को तोड़ दिया:
मैं क्योंकि अगर मैंने कॉल निकालने यह एक autolayout मुद्दा है पर विश्वास नहीं करते UIDynamicBehavior
जोड़ने के लिए यह कोई autolayout समस्याओं के साथ ठीक काम करता है। कोई autolayout त्रुटियों को कभी भी फेंक दिया जाता है।
@interface SWViewController() {
UICollisionBehavior *coll;
UIDynamicAnimator *dynamicAnimator;
}
@implementation SWViewController
- (void)viewDidLoad {
[super viewDidLoad];
dynamicAnimator = [[UIDynamicAnimator alloc] initWithReferenceView:self.view];
}
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
[self setupCollisions]; // commenting this out fixes the layout
}
- (void)setupCollisions {
NSArray *dynamicViews = @[greenView];
coll = [[UICollisionBehavior alloc] initWithItems:dynamicViews];
CGFloat topBound = CGRectGetMinY(greenView.frame);
[coll addBoundaryWithIdentifier:@"top"
fromPoint:CGPointMake(0, h1)
toPoint:CGPointMake(CGRectGetWidth(greenView.frame), h1)];
[dynamicAnimator addBehavior:coll];
}
अगर मैं didRotateFromInterfaceOrientation
ओवरराइड मैं देख सकता हूँ कि greenView
के शीर्ष सीमा (setupCollisions
फिक्स यह करने के लिए कॉल को हटाने के लिए फिर से,) का पालन नहीं करता क्या autolayout का कहना है यह होना चाहिए: यहाँ कोड है।
greenView
पर autolayout सीमाएं हैं:
height = 200
trailing space to Superview = 0
leading space to Superview = 0
bottom space to Superview = 0
हाय, मुझे लगता है कि आप टकराव व्यवहार यहाँ का उपयोग कर रहे |: एच:
मैं एक और बाधा जोड़कर तय की। गुरुत्वाकर्षण व्यवहार के बिना यह क्या करता है? धन्यवाद। – Unheilig
इस उदाहरण में, मैं गुरुत्वाकर्षण व्यवहार का भी उपयोग नहीं कर रहा हूं। अगर मैं इसे बाहर कर देता हूं तो यह वही काम करता है। – swilliams
मैं इस विषय पर डब्ल्यूडब्ल्यूडीसी वीडियो देखने की अत्यधिक अनुशंसा करता हूं। इस साल से सत्र 206 और 221। https://developer.apple.com/wwdc/videos/ यदि आपके पास है तो SO पर अपने स्वयं के प्रश्न बनाएं। – swilliams