有什么办法从不同的方向获取UIObject的框架?

时间:2011-10-03 04:07:25

标签: objective-c uiview frame

我有一把钢琴UIView,由Key子视图组成。键被分配相对于钢琴框架的框架。如果我保持纵向模式,这样可以正常工作。

但是,如果我以横向模式开始,钢琴的框架是横向的,但是相对于钢琴的纵向模式框架,按键设置为自己。 (有一个灰色区域,所以我知道钢琴的框架与键的总和不同)

在我处于纵向模式时,有没有办法获得横向模式钢琴的框架?这样,我可以查看我是否处于横向模式,并指定适当的帧。

以下代码在钢琴课中

- (void) setWhiteKeys {

CGRect baseFrame = CGRectMake(0, 0, self.frame.size.width / 7, self.frame.size.height)                

for (Keys *key in whiteKeys) {

 // sets the key's x origin to where the previous key ended

key.frame = baseFrame;
baseFrame.origin.x = key.frame.origin.x + key.frame.size.width;
}

1 个答案:

答案 0 :(得分:1)

您需要使用方法layoutSubviews。它将在开始时自动调用,并在设备方向更改后自动调用。

在该方法中,让您的视图检查它的边界并相应地布局任何子视图,例如

- (void)layoutSubviews {
    CGRect bounds = self.bounds;

    // Layout your subviews here according to the bounds

在这方面要考虑的关键是,您希望您的观点在两个不同的方向上表现如何?你想要它们更大,还是在不同的地方,或保持不变?