我有一把钢琴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;
}
答案 0 :(得分:1)
您需要使用方法layoutSubviews
。它将在开始时自动调用,并在设备方向更改后自动调用。
在该方法中,让您的视图检查它的边界并相应地布局任何子视图,例如
- (void)layoutSubviews {
CGRect bounds = self.bounds;
// Layout your subviews here according to the bounds
在这方面要考虑的关键是,您希望您的观点在两个不同的方向上表现如何?你想要它们更大,还是在不同的地方,或保持不变?