在空iOS应用程序中绘制一些东西

时间:2012-01-25 12:45:30

标签: iphone objective-c ios

我有Windows客户端开发,语言c ++和Flash ActionScript3开发方面的经验,但我是iOS开发人员的初学者......

要使它真正详细,这篇文章可能有点太长了......

我的Xcode ver是4.2.1

我创建了一个iOS应用程序(空应用程序),只有(MyAppDelegate.h)和(MyAppDelegate.m),如果我编译并运行它,将会显示一个白板,仅此而已,我们都知道。

现在,我想绘制一张图片,或简单的矩形或屏幕上的任何内容,我不想使用故事板,所以我创建了一个新的Objective-C类:MyView,它继承自UIView。并覆盖函数 - (void)drawRect:(CGRect)rect

然后我在MyAppDelegate.m的didFinishLaunchingWithOptions函数中写了这样的东西:

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

所以你看,我做的是分配一个新的MyView实例并将其分配给self.window.rootViewController.view,然后调用drawRect函数。 但是当我在MyView的drawRect函数和调试中放置一个断点时,它并没有就此停止,这意味着应用程序永远不会去那里,我真的无法弄清楚原因。

我阅读了有关View和ViewController的文档,但他们没有告诉这个问题,希望你能帮助我!请告诉我我应该阅读什么来了解更多关于这个主题的信息

2 个答案:

答案 0 :(得分:4)

首先关闭 NEVER 直接调用drawRect,系统会调用它。其次在你的例子中你没有视图控制器,所以实际上rootViewController是nil,因此没有什么工作。

您应该创建一个视图控制器来管理您的视图,或者直接将UIView子类直接添加到窗口中......

[self.window addSubview:myView];

注意:你应该使用UIViewController为你管理这个!

如果你是objective-c的新手,那么我将从一个UIView项目而不是一个空项目开始,看看一切如何挂起。

答案 1 :(得分:0)

如果您是新手并想要使用Quartz(2D api)进行实验,最好使用单一视图应用程序模板创建一个新项目,编辑xib以将视图的类更改为您的子类并实现drawRect:in你的视图子类,应该是全部。