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

回到顶部