Форум программистов, компьютерный форум CyberForum.ru

Программирование iOS/iPhone

Войти
Регистрация
Восстановить пароль
 
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
#1

Выводится картинка на view сразу при запуске программы и только один раз - Программирование iOS

12.05.2014, 01:12. Просмотров 631. Ответов 6
Метки нет (Все метки)

Ну собственно это продолжение вопроса на мой предыдущий вопрос про вывод картинки, с выводом я почти разобрался, в свойстве customclass объекта view указываю созданный мной класс QuartzImageView который выглядит так:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#import "QuartzImages.h"
@implementation QuartzImageView
{
    CGImageRef _image;
}
-(void)drawInContext:(CGContextRef)context
{
    CGRect imageRect;
    imageRect.origin = CGPointMake(50.0, 150.0);
    imageRect.size = CGSizeMake(64.0, 64.0);
    CGContextDrawImage(context, imageRect, self.image);
}
- (CGImageRef)image
{
    if (_image == NULL)
    {
        NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"Demo" ofType:@"png"];
        UIImage *img = [UIImage imageWithContentsOfFile:imagePath];
        _image = CGImageRetain(img.CGImage);
    }
    return _image;
}
@end
но блин, картинка начинает отрисовываться сразу при запуске проекта, хотя я ни где не вызывал ни один из выше указанных методов, и что еще более огорчительно, после запуска проекта я не могу вызвать не один из выше указанных методов повторно, потому что вылетает ошибка - signal signbart. Друзья, мне вот все твердят что отрисовать картинку очень просто и делается это в пару строк кода, однако ни кто не может сказать как. Да и еслиб это так просто было то в примере кода не было бы такой кучи тк все что выше(код) указанное я скачал с сайта эппдевелопер и просто обрезал отбросив лишнее. Оооочень прошу помогите, поделитесь опытом, каждую каплю информации просто неимоверным трудом приходится добывать, Спасибо!
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2014, 01:12     Выводится картинка на view сразу при запуске программы и только один раз
Посмотрите здесь:
При первом запуске программно переключиться на второй view controller (его не видно)
По нажатию кнопки на View Controllere открыть Table View Controller
Вместо navigation bar с table view хочу сделать просто view controller
Выполнить код в цыкле один раз Objective-C
Изменение имени кнопки при нажатии на другую кнопку (в другом view) Objective-C
Вызвать метод View Controller'a из другого View Controller'a Objective-C
Objective-C Приложение вылетает при запуске
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
12.05.2014, 08:19     Выводится картинка на view сразу при запуске программы и только один раз #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
nikitossssss, давайте по порядку.

1.
картинка начинает отрисовываться сразу при запуске проекта
Если взять за данность, что ваш код рабочий, то вы явно указываете, Какой файл и откуда отрисовывать:
Objective-C
1
2
3
4
5
6
7
8
9
10
- (CGImageRef)image
{
    if (_image == NULL)
    {
        NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"Demo" ofType:@"png"];
        UIImage *img = [UIImage imageWithContentsOfFile:imagePath];
        _image = CGImageRetain(img.CGImage);
    }
    return _image;
}
2.
хотя я ни где не вызывал ни один из выше указанных методов
А вам и не нужно... Это система за вас сделает, если вы ей информацию подкинете где и что брать. Если подробнее - читайте тему рендеринга в iOS.
3.
вылетает ошибка - signal signbart
Где вылетает, на какой строчке?
4. Вы приводите код, но
Objective-C
1
@implementation QuartzImageView
Ничего не дает. Где @interface? Я подразумеваю, что вы отнаследовались от UIImageView... Этого делать для вашей задачи не нужно.
5.
не было бы такой кучи тк все что выше(код)
Это же всего 7 строчек кода... Какая куча. И да, вы правы, это не нужно совершенно.

P.S.
Вам это было нужно?:
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
- (void)viewDidLoad {
    [super viewDidLoad];
    UIButton *buttonToShowImageView = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    buttonToShowImageView.frame = CGRectMake(0,0,200,50);
    [buttonToShowImageView setTitle:@"Tap me!" forState:UIControlStateNormal];
    [buttonToShowImageView addTarget:self action:@selector(onButtonTap:) forControlEvents:UIControlEventTouchUpInside];
    [self.view addSubview:buttonToShowImageView];
}
 
- (void)onButtonTap:(UIButton *)sender {
    UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Demo.png"]];
    iv.center = sender.center;
    [self.view addSubview:iv];
}
P.P.S
Добавьте этот код в наследника UIViewController.
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
12.05.2014, 12:54  [ТС]     Выводится картинка на view сразу при запуске программы и только один раз #3
Zulkis, огромное спасибо! С работы приду, посмотрю но думаю все будет работать. И скажите пожалуйста выше указанный код предназначен для вызова руками? Потомучто код написанный мной вызывается системой, а мне это не надо.
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
12.05.2014, 13:13     Выводится картинка на view сразу при запуске программы и только один раз #4
nikitossssss, пожайлуйста. Почитайте и посмотрите.
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
12.05.2014, 15:14  [ТС]     Выводится картинка на view сразу при запуске программы и только один раз #5
Zulkis, странно но ваш код не работает поче му то, по нажатию кнопки ни чего не происходит(((( Мож я че не так сделал поэтому подкрепляю картинками
Миниатюры
Выводится картинка на view сразу при запуске программы и только один раз   Выводится картинка на view сразу при запуске программы и только один раз  
zulkis
681 / 608 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
12.05.2014, 17:25     Выводится картинка на view сразу при запуске программы и только один раз #6
Цитата Сообщение от nikitossssss Посмотреть сообщение
Zulkis, странно но ваш код не работает поче му то, по нажатию кнопки ни чего не происходит(((( Мож я че не так сделал поэтому подкрепляю картинками
Ох эти ваши картинки... Вы breakpoint поставьте в метод, а потом уже говорите работает или нет.
Для пущей уверенности можете добавить:
Objective-C
1
iv.backgroundColor = [UIColor redColor];
После
Objective-C
1
UIImageView *iv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Demo.png"]];
А потом картинку проверьте свою "Demo.png". Скорее всего ее у вас даже в проекте нету.

Вопрос:
Вы вообще хоть что-нибудь читали? Или так, на удачу все делаете?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 20:42     Выводится картинка на view сразу при запуске программы и только один раз
Еще ссылки по теме:
Текст в таблице при первом запуске
Как сохранить состояние приложения и восстановить его при следующем запуске
Как сохранить числовые данные, чтобы они были доступны при следующем запуске приложения? Objective-C
Нужно всего лишь вставить эмблему при запуске, сменить название в главном меню да вставить текст в эбаут
Как сделать принятие классом протокола только при определенных условиях? Objective-C

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
12.05.2014, 20:42  [ТС]     Выводится картинка на view сразу при запуске программы и только один раз #7
короче ваще нече не работает, голова уже кепит от этого!
Единственный рабочий проект который имеется содержит следущий код, который от всех вышеуказанных, как мне кажется оптимальный, да и работает так как надо - рисует картинку по клику мышки
Objective-C
1
2
3
4
5
6
7
8
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    UIImageView *splashImageView;
    splashImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pets.jpg"]];
    splashImageView.frame = CGRectMake(50, 150, 50, 50);
    [self.view addSubview:splashImageView];
   // NSLog(@"hello")
}
Но у него есть недостаток - кроме peets.jpg он ничего другого выводить не хочет, а когда я поудалял эту pets.jpg отовсюду и из папки и из медиатеки xcode программа продолжает ее отрисовывать, откуда? она ее берет - я вообще недоумеваю и это поставило меня в глубокий ступор. И вот скажу честно я никогда не поверю, что чтоб просто вывести картинку нужно написать два метода по 8 строк кода, в делфи(я раньше на нем работал) это занимало три строчки добавленные в любой метод и тут думаю также можно просто ни кто не знает как это((((((((
Yandex
Объявления
12.05.2014, 20:42     Выводится картинка на view сразу при запуске программы и только один раз
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru