нарисовать что-нибудь в пустом приложении для iOS - PullRequest
0 голосов
/ 25 января 2012

У меня есть опыт работы с разработчиком Windows Client, языком C ++ и разработчиком Flash ActionScript3, но я довольно новичок в разработке iOS…

, чтобы сделать это действительно подробным, этот пост может быть слишком длинным ...

моя версия Xcode 4.2.1

я создал приложение для iOS (пустое приложение), и есть только (MyAppDelegate.h) и (MyAppDelegate.m), если я скомпилирую и запуском его, будет отображена белая доска, и ничего более, что мы все знают.

Теперь я хочу нарисовать картинку, или простой прямоугольник, или что-то еще на экране, и я не хочу использовать раскадровку, поэтому я создаю новый класс Objective C: MyView, который наследуется от UIView. и переопределить функцию - (void) drawRect: (CGRect) rect

затем я пишу что-то вроде этого в функции didFinishLaunchingWithOptions MyAppDelegate.m:

- (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 ]

4 голосов
/ 25 января 2012

Сначала НИКОГДА не вызывайте drawRect напрямую, система вызывает это. Во-вторых, в вашем примере у вас нет контроллера представления, так что фактически rootViewController равен нулю, поэтому почему ничего не работает.

Вы должны либо создать контроллер представления, чтобы управлять своим видом, либо просто добавить свой подкласс UIView в окно напрямую ...

[self.window addSubview:myView];

ПРИМЕЧАНИЕ: Однако вы должны использовать UIViewController, чтобы управлять этим для вас!

Если вы новичок в target-c, тогда я бы начал с проекта UIView, а не с пустого, и посмотрел бы, как все соединяется.

0 голосов
/ 25 января 2012

Если вы новичок и хотите поэкспериментировать с Quartz (2D API), лучше создайте новый проект, используя шаблон приложения с одним представлением, отредактируйте xib, чтобы изменить класс представления на ваш подкласс, и реализуйте drawRect: inВаш подкласс представления, это должно быть все.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...