【问题标题】:Change frame of view when status bar height will be changed?更改状态栏高度时更改视图框架?
【发布时间】:2012-03-13 08:08:03
【问题描述】:

当状态栏高度增加时,我想改变 UIImageView 和按钮在视图控制器中的位置。

我已经通过比较状态栏高度来改变视图框架,我也知道当状态栏框架改变时会调用下面的方法,但它会在委托中调用。

- (void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame
- (void)application:(UIApplication *)application didChangeStatusBarFrame:(CGRect)oldStatusBarFrame

但我想在视图控制器中更改图像视图和按钮的位置,我该怎么做?

【问题讨论】:

  • 我通过实现以下方法找到了解决方案:[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeframe) name:UIApplicationWillChangeStatusBarFrameNotification object:nil];

标签: iphone objective-c ios uistatusbar


【解决方案1】:

您可以在视图中创建一个公共方法,以在其中一种方法触发时更改位置,例如:

-(void)changePosition {
myImageView.frame = CGRectMake(newPosition.x, newPosition.y, myImageView.frame.size. width, myImageView.frame.size.height) 

myButton.frame = CGRectMake(newPosition.x, newPosition.y, myButton.frame.size. width, myButton.frame.size.height) 
}

要将其公开,请在 .h 文件中创建它,例如:

@interface MyView : UIViewController {
}

-(void)changePosition;
@end

然后你从你的代表那里打电话:

- (void)application:(UIApplication *)application willChangeStatusBarFrame:(CGRect)newStatusBarFrame{

[myView changePosition];

}

【讨论】:

  • 我认为该方法应该是类方法,例如在该方法之前应该有 + 而不是 -...
  • 如果你放 + 你会做一个静态方法
  • thanx 但我通过实现以下方法找到了另一个解决方案: [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeframe) name:UIApplicationWillChangeStatusBarFrameNotification object:nil];
【解决方案2】:

您可以观察 UIApplicationWillChangeStatusBarFrameNotificationUIApplicationDidChangeStatusBarFrameNotification

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 2013-01-16
    • 2012-05-16
    • 1970-01-01
    • 2020-04-11
    • 1970-01-01
    相关资源
    最近更新 更多