Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

12.05.2014, 01:12. Просмотров 658. Ответов 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. Друзья, мне вот все твердят что отрисовать картинку очень просто и делается это в пару строк кода, однако ни кто не может сказать как. Да и еслиб это так просто было то в примере кода не было бы такой кучи тк все что выше(код) указанное я скачал с сайта эппдевелопер и просто обрезал отбросив лишнее. Оооочень прошу помогите, поделитесь опытом, каждую каплю информации просто неимоверным трудом приходится добывать, Спасибо!
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2014, 01:12
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Выводится картинка на view сразу при запуске программы и только один раз (Программирование iOS):

При первом запуске программно переключиться на второй view controller (его не видно) - Программирование iOS
Добрый день. Есть 2 view controller'а. Во втором текстовое поле. Если оно не заполнено (а при первом запуске оно пустое), то надо...

Как выполнить код только один раз (при запуске программы?) - VBA
Как известно, At module level, you can use only comments and declarative statements. Значит, весь исполняемый код должен лежать внутри...

Как мне сделать так, чтобы данный текстовый файл был открыт один раз при запуске программы и закрыт при закрытии программы? - C++ Builder
Привет! Возник следующий вопрос. Программа состоит из основного окна Form1 и нескольких Unit. По таймеру в Form1 запускается один из...

Растровая графика, картинка рисуется только один раз, без анимации - C++ WinAPI
Всем доброго времени суток! Есть такая функция: void Draw(HDC hdc, HDC memDC) { BitBlt(hdc, posX, posY, width, height, memDC,...

Картинка при запуске программы - C#
Привет всем. Как сделать так чтобы при запуске приложения WinForm, сначала на экране появлялась картинка (ну типа логотипчик) а тотом...

Появляется картинка при запуске программы - Delphi
Всем привет! Как сделать, чтобы при запуске программы, появилось сначала изображение (в течении 3 секунд), по истечению 3 секунд, оно...

6
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
12.05.2014, 08:19 #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.
1
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
12.05.2014, 12:54  [ТС] #3
Zulkis, огромное спасибо! С работы приду, посмотрю но думаю все будет работать. И скажите пожалуйста выше указанный код предназначен для вызова руками? Потомучто код написанный мной вызывается системой, а мне это не надо.
0
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
12.05.2014, 13:13 #4
nikitossssss, пожайлуйста. Почитайте и посмотрите.
0
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
12.05.2014, 15:14  [ТС] #5
Zulkis, странно но ваш код не работает поче му то, по нажатию кнопки ни чего не происходит(((( Мож я че не так сделал поэтому подкрепляю картинками
0
Миниатюры
Выводится картинка на view сразу при запуске программы и только один раз   Выводится картинка на view сразу при запуске программы и только один раз  
zulkis
683 / 610 / 38
Регистрация: 13.01.2011
Сообщений: 1,724
12.05.2014, 17:25 #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". Скорее всего ее у вас даже в проекте нету.

Вопрос:
Вы вообще хоть что-нибудь читали? Или так, на удачу все делаете?
0
nikitossssss
1 / 1 / 0
Регистрация: 22.07.2013
Сообщений: 48
12.05.2014, 20:42  [ТС] #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 строк кода, в делфи(я раньше на нем работал) это занимало три строчки добавленные в любой метод и тут думаю также можно просто ни кто не знает как это((((((((
0
12.05.2014, 20:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2014, 20:42
Привет! Вот еще темы с ответами:

.NET 4.x При запуске программы сразу помещать в трей - C#
Я написал программу она у меня сворачиваеться в трей, а подскажите как сделать так что бы когда прогрумму запускали она была сразу свернута...

Сумма ряда. При запуске программы не выводится ответ - C++
Подскажите где ошибка? При запуске программы не выводится ответ #include <iostream> #include <cstdlib> #include "math.h" #include...

SQLite При выборке одна и та же строка выводится несколько раз. Как сделать чтобы один? - C#
Считываем журнал безопасности в Базу данных так сказать онлайн и в textbox записываем выборки и он находит запись с eventID=4689 и как...

Как выполнить код при запуске приложения один раз? - C#
Изучая c# столкнулся с проблемой - как выполнить код при запуске приложения один раз? Скорее всего - это событие формы. В Delphi это бы...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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