No.1 iOS---UI学习第一天(笔记)(以及为什么模拟器上不显示我们添加的控件的解决办法)

1.刚刚用Xcode6.1新建了个iOS的application,然后写了个label,用模拟器运行以后发现没有展现出来这个label

原因以及结果:


可能原因是你没添加windows控件:(window控件就好比是画板!)(Xcode6.0版本不知道为什么没有自动生成以下3行代码,自己手动敲上去吧!)


self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];

self.window.backgroundColor = [UIColor whiteColor];

[self.window makeKeyAndVisible];


例如:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{
    // Override point for customization after application launch.
    
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.window.backgroundColor = [UIColor whiteColor];  
[self.window makeKeyAndVisible];

    

//以下是生成一个label的代码:
UILabel *helloLabel = [[UILabel alloc] initWithFrame:CGRectMake(20, 120, 200, 30)];
    
helloLabel.text = @"hello world";
    
helloLabel.textAlignment = NSTextAlignmentCenter;//设置对齐方式
    
[[self window] addSubview:helloLabel];
    
[helloLabel release];

    
return YES;

}

然后需要在AppDelegate.m中添加://生成的window要在计数器为0时,释放掉

- (void)dealloc

{  
[_window release];
    
[super dealloc];
}

1.UIView (几乎所有屏幕上能看到的元素,都是它的子类)

2.UIWindow(必须在程序加载的时候渲染出来,而且最好一个程序里只有一个window,window好比一个画板!)

3.每个创建出来的view都要添加到window上才可以在模拟器上显示出来。[self.windowaddSubview:xxx];

4. frame与bounds

frame(相对于父视图坐标系它在哪个位置)  (view加在window上,所以frame的坐标是基于在window上的坐标系,而不是模拟器的屏幕的原点)。

bounds(相对于自身坐标系的位置)

5.一个view可以添加很多个子视图,每个子视图下面又有很多子视图。(相当于树形结构)

每个view都有一个tag属性,这个属性就相当于你给这个view的一个编号,


 

 

 




你可能感兴趣的:(ios,UI)