iOS:取向取得未来self.view.bounds
背景:我想动画我的内容随着方向的变化。我的内容位置是相对于self.view.bounds
。iOS:取向取得未来self.view.bounds
问题:为了使内容和边界一起动画,我需要知道视图的边界到底是什么。我可以硬编码,但我希望找到一个更有活力的方式。
代码:因此,所有的动画发生在willRotateToInterfaceOrientation
按如下:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { //centering the image
imageView.frame = CGRectMake(self.view.bounds.origin.x + (self.view.bounds.size.width - image.size.width)/2 , self.view.bounds.origin.y + (self.view.bounds.size.height - image.size.height)/2, image.size.width, image.size.height);
NSLog(@"%d",[[UIDevice currentDevice] orientation]);
NSLog(@"%f", self.view.bounds.origin.x);
NSLog(@"%f", self.view.bounds.origin.y);
NSLog(@"%f", self.view.bounds.size.width);
NSLog(@"%f", self.view.bounds.size.height);
}
的边界是方向变化之前。因此,这只适用于转换180度的情况。如果我要使用didRotateFromInterfaceOrientation
,动画将后的方向变化看起来很糟糕。
回答:
使用willAnimateRotationToInterfaceOrientation:duration:
,而不是做什么。此方法在旋转动画块内被调用,并且此时所有边界都已正确设置。 Docs.
回答:
如果你想它的动态,然后当你初始化的ImageView,设置autoresizingMask
属性,这样当的ImageView上海华上旋转调整大小,边距可以自动调整自己......
imageView = //init imageView imageView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin|UIViewAutoresizingFlexibleBottomMargin|UIViewAutoresizingFlexibleLeftMargin|UIViewAutoresizingFlexibleRightMargin;
//addtional config
这意味着你只需要设置一次框架然后imageView将始终调整自己,以保持在中间。
退房UIView类参考http://developer.apple.com/library/ios/ipad/#documentation/uikit/reference/uiview_class/uiview/uiview.html看到你可以用autoresizingMask属性
回答:
如果我正确理解你,你只需要在你CGRectMake交换的X/Y坐标和宽度/高度,让你的未来布局了90度的转变。如果它是180度变化,那么它与当前相同
CGRectMake(self.view.bounds.origin.y + (self.view.bounds.size.height - image.size.height)/2 , self.view.bounds.origin.x + (self.view.bounds.size.width - image.size.width)/2, image.size.height, image.size.width);
以上是 iOS:取向取得未来self.view.bounds 的全部内容, 来源链接: utcz.com/qa/258030.html