我刚刚开始使用导航栏制作新应用。我使用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没有出现......
对于框架,如果我为CGRectMake(0, 65, 50, 20)
设置65
,y
,则会出现“Hello World”...(我知道,我必须增加宽度:))
我只是不明白我的观点的起源......如果有人能解释我的话。
由于
答案 0 :(得分:1)
在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;
}
}
}