self.view.frame.size 在同一方向改变值

Posted

技术标签:

【中文标题】self.view.frame.size 在同一方向改变值【英文标题】:self.view.frame.size change values at the same orientation 【发布时间】:2014-07-21 13:59:08 【问题描述】:

对我来说一些非常奇怪的问题:

- (void)horizontalPickerView:(HorizontalPickerView *)picker didSelectElementAtIndex:(NSInteger)index 
    if (self.interfaceOrientation == UIInterfaceOrientationLandscapeLeft ||
        self.interfaceOrientation == UIInterfaceOrientationLandscapeRight) 
        sdashSize = CGRectMake(0.0f, 40.0f, self.view.frame.size.width, self.view.frame.size.height);
     else 
        sdashSize = CGRectMake(0.0f, 40.0f, self.view.frame.size.height, self.view.frame.size.width - 40.0f);
    

如您所见,我有一个选择器视图。这个方法每次都会运行,我在这个选择器视图中选择了一些东西。所以现在如果我将我的 iPhone 旋转到横向并使用此代码转到下一个视图,它会运行一次 -> 进入 if 状态并给我尺寸:320 x 480。所以现在选择一些相同方向的元素并运行相同代码(如果再次声明)给我 480 x 320。我不明白相同方向的相同代码如何给我不同的值。

【问题讨论】:

【参考方案1】:

不要使用frame 属性,使用bounds 属性。本质上:

视图的frame (CGRect) 是其矩形在父视图坐标系中的位置。默认情况下,它从左上角开始。

视图的bounds (CGRect) 在其自己的坐标系中表示视图矩形。

This answer 更深入地解释了正在发生的事情。

【讨论】:

以上是关于self.view.frame.size 在同一方向改变值的主要内容,如果未能解决你的问题,请参考以下文章

Expression is not assignable分析

Xcode 标签未居中

按钮的 UITapGestureRecognizer 问题

[转]Xcode提示“expression is not assignable”

自定义 UIView 类 - Swift

UICollectionView 设置框架