• ios开发心得之一


       如果学习IOS开发这对于一个初学者来说,是一件非常挠头的事情。其实学习IOS开发无外乎三大门槛。

    一、        硬件门槛(学习IOS是要花钱的,一个MAC一个手机就得二万大洋了,还不算开发者帐号)

    二、        环境门槛(搞喜欢了windows你花mac会很痛苦的,要什么没有什么,不过搞一搞就好了)

    三、        技术门槛(语言objective-C一开始你会感觉真他妈的恶心,不过越用越爽,有点臭豆腐的感觉了。还有就是xcode的使用,IOS开发环境下的MVC的理解这些东西每一处都是档在初学者头上的利剑)

    许多人学着学着就放弃了,从今天开始,哥们我有空就写点文档与大家分享一下,希望对IOS开发的初学者有点帮助。

    如何理解IOS中UIViewControl/UIView/UIApplicationDelegate之间的关系。

    一个UIViewControl可以对应N个UIView

    N个UIViewControl对应1个UIApplicationDelegate

    呵呵,不知道各位是不是看懂了,以往大家都喜欢用xcode自动生成的模版来实现程序,这样非常方便与快捷但是麻烦就在于初学者会一头雾水,对于原理的理解不是很好。我在这里给出一个完整的源程序,同时我们也来分析一下它。

    1、         首先创建一个UIViewController

    #import <UIKit/UIKit.h>
    
    @interface HelloWorldViewController : UIViewController
    @end
    
    @implementation HelloWorldViewController
    //这个解释一下,用loadView这个方法的原因是因为
    //我们没有使用xib文件来画界面,所以用loadView方法
    - (void)loadView
    {
        //创建一个UIView,这个UIView你如何去理解它哪,你可以把它理解为一个画布
        //并且初始化它的大小为整个屏幕那么大
        UIView *contentView = 
        [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
        //指定它的背景颜色
    	contentView.backgroundColor = [UIColor lightGrayColor];
    	//有了画布我们需要在上面搞点组件,一般情况下我们是用InterfaceBuilder画的
        //在这里我们用手工的方法来编写
        //初始化一个UILabel组件,说白了就是一个标签,CGrectMake的四个参数
        //XY坐标,宽度与高度
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 30.0f)];
        label.text = @"Hello World";
        label.center = contentView.center;
    	label.backgroundColor = [UIColor clearColor];
    	label.textAlignment = UITextAlignmentCenter;
    
        [contentView addSubview:label];
        [label release];
        //现在画布上有东西了,我们需要把它放到画板上,其实这个UIViewController就是一个画板
        //想一想一个画板上,是不是可以一层一层的放许多的画布哪,一个道理哪。
    	self.view = contentView;
        [contentView release];
    	
    	// For testing the console pane
    	NSLog(@"Hello World!");
    }
    @end
    

      

    2、         创建一个UIApplicationDelegate

     1 @interface HelloWorldAppDelegate : NSObject <UIApplicationDelegate>
    2 {
    3 }
    4 @end
    5
    6 @implementation HelloWorldAppDelegate
    7 //这个方法,是在程序启动后,所执行的
    8 - (void)applicationDidFinishLaunching:(UIApplication *)application {
    9 // UIWindow可以理解为一个画板架,我们把UIController放到UIWindows中
    10 UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    11 HelloWorldViewController *hwvc = [[HelloWorldViewController alloc] init];
    12 [window addSubview:hwvc.view];
    13 [window makeKeyAndVisible];
    14 }
    15 @end



    3、         在main启动这个程序

    1 int main(int argc, char *argv[])
    2 {
    3 NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    4 int retVal = UIApplicationMain(argc, argv, nil, @"HelloWorldAppDelegate");
    5 [pool release];
    6 return retVal;
    7 }

    完整程序:

    #import <UIKit/UIKit.h>

    @interface HelloWorldViewController : UIViewController
    @end

    @implementation HelloWorldViewController
    //这个解释一下,用loadView这个方法的原因是因为
    //我们没有使用xib文件来画界面,所以用loadView方法
    - (void)loadView
    {
    //创建一个UIView,这个UIView你如何去理解它哪,你可以把它理解为一个画布
    //并且初始化它的大小为整个屏幕那么大
    UIView *contentView =
    [[UIView alloc] initWithFrame:[[UIScreen mainScreen] applicationFrame]];
    //指定它的背景颜色
    contentView.backgroundColor = [UIColor lightGrayColor];
    //有了画布我们需要在上面搞点组件,一般情况下我们是用InterfaceBuilder画的
    //在这里我们用手工的方法来编写
    //初始化一个UILabel组件,说白了就是一个标签,CGrectMake的四个参数
    //XY坐标,宽度与高度
    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 320.0f, 30.0f)];
    label.text = @"Hello World";
    label.center = contentView.center;
    label.backgroundColor = [UIColor clearColor];
    label.textAlignment = UITextAlignmentCenter;

    [contentView addSubview:label];
    [label release];
    //现在画布上有东西了,我们需要把它放到画板上,其实这个UIViewController就是一个画板
    //想一想一个画板上,是不是可以一层一层的放许多的画布哪,一个道理哪。
    self.view = contentView;
    [contentView release];

    // For testing the console pane
    NSLog(@"Hello World!");
    }
    @end

    @interface HelloWorldAppDelegate : NSObject <UIApplicationDelegate>
    {
    }
    @end

    @implementation HelloWorldAppDelegate
    //这个方法,是在程序启动后,所执行的
    - (void)applicationDidFinishLaunching:(UIApplication *)application {
    // UIWindow可以理解为一个画板架,我们把UIController放到UIWindows中
    UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    HelloWorldViewController *hwvc = [[HelloWorldViewController alloc] init];
    [window addSubview:hwvc.view];
    [window makeKeyAndVisible];
    }
    @end

    int main(int argc, char *argv[])
    {
    NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
    int retVal = UIApplicationMain(argc, argv, nil, @"HelloWorldAppDelegate");
    [pool release];
    return retVal;
    }




  • 相关阅读:
    eclipse新建web项目开发JSP
    配置tomcat系统日志--java eclipse
    Eclipse 导入外部项目无法识别为web项目并且无法在部署到tomcat下
    for和foreace的区别
    布局TextView和EditText区别,layout_width和lay_weight区别--Android Studio
    设备旋转,创建水平模式布局--Android studio
    关于点击Invalidate Caches/Restart禁止插件后,重新加载--Android Studio
    Android 全面插件化 RePlugin 流程与源码解析
    git分支开发,分支(feature)同步主干(master)代码,以及最终分支合并到主干的操作流程
    git使用流程
  • 原文地址:https://www.cnblogs.com/chu888chu888/p/2224149.html
Copyright © 2020-2023  润新知