CGRectMake标签不会出现

时间:2014-06-05 02:19:52

标签: ios objective-c cgrectmake

我刚刚开始使用导航栏制作新应用。我使用AppDelegate.m中的导航制作了第一个视图。

AppDelegate.m:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    sleep(2);
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // Override point for customization after application launch.
    self.window.backgroundColor = [UIColor whiteColor];
    UINavigationController* nav = [[UINavigationController alloc] initWithRootViewController:[[HomeViewController alloc] initWithNibName:@"HomeViewController" bundle:nil]];
    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];
    return YES;
}

然后,我在loadView方法中创建了HomeViewController的视图。

HomeViewController的LoadView:

- (void)loadView
{
    self.view = [[UIView alloc] init];
    self.view.backgroundColor = [UIColor whiteColor];
    self.searchPoiInstructionsLabel = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 20)];
    self.searchPoiInstructionsLabel.layer.borderColor = [UIColor blackColor].CGColor;
    self.searchPoiInstructionsLabel.layer.borderWidth = 2.0f;
    self.searchPoiInstructionsLabel.text = @"HELLO WORLD";
    [self.view addSubview:self.searchPoiInstructionsLabel];
}

我的标签Hello World没有出现......

enter image description here

对于框架,如果我为CGRectMake(0, 65, 50, 20)设置65y,则会出现“Hello World”...(我知道,我必须增加宽度:))

enter image description here

我只是不明白我的观点的起源......如果有人能解释我的话。

由于

3 个答案:

答案 0 :(得分:1)

这是iOS7的行李。如果您在iOS6下运行您的应用程序,您将看到您期望/打算的标签。

在iOS7下,您的视图来自导航栏,这就是您将帧设置为0,0时未看到标签的原因。如果仔细观察,您实际上可以在状态栏中看到载波指示器后面的模糊标签。

有多种方法可以解决这个问题:

如果UINavigationBar不是半透明的,则0,0原点将起作用。

您可以使用topLayoutGuide

更新标签框架

您可以使用UIScrollView代替UIView

答案 1 :(得分:0)


iOS 7中的原点有点不同。在导航控制器中,导航栏下面的内容可以显示一些模糊效果。因此,导航控制器中标签的原点是导航栏下方的左上角(0,0),而不是导航栏下的最左侧点。这里有demo给你。

答案 2 :(得分:0)

- (void)viewDidLoad
{
    [super viewDidLoad];
    if ([[[[UIDevice currentDevice]systemVersion] componentsSeparatedByString:@"."][0] intValue] >=7)    {
      if ([self respondsToSelector:@selector(edgesForExtendedLayout)]) {
        self.edgesForExtendedLayout = UIRectEdgeNone;
      }
    }
}