Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Как двигать и вращать UIImage одновременно

Помогите разобраться.


Есть персонаж. После нажатия на StartGame координатам объекта присваиваются начальные значения (X = Object.center.x;  Y = Object.center.y) и запускается таймер, который каждые 0.05 сек. выполняет метод Object.Moving. 

В нём вычисляются координаты объекта X и Y;

И таким образом задаётся движение персонажа:   Object.center = CGPointMake ((int)X , (int)Y);

Потом обращение к методу [self Object.Rotate];


В Object.Rotate:

Object.center = CGPointMake (Object.center.x, Object.center.y);

Object.transform = CGAffineTransformMakeRotation(angle);        // угол снимается со слайдера на экране


Если закомментировать Object.Rotate - движение персонажа происходит отлично. А с ним вращение (через слайдер на экране) происходит не относительно текущей точки центра объекта, а относительно начальной точки. То есть Объект уже в другом месте, но если дернуть слайдер - он появляетсяна стартовой позиции и вращается. Отпустишь слайдер - появляется там, где должен быть.

Как сделать чтобы вращение происходило относительно текущего центра объекта (UIImage)?


Заранее спасибо, жду ваших ответов.






Это сообщение отредактировал(а) SlavaMinsk - 2.4.2014, 17:16
Ответ:
Спасибо, я примерно так и сделал. Правда всё равно получилось не идеально.  При сдвиге слайдера влево и вправо (положительный и отрицательный угол) вращение происходит относительно разных точек.

Но это уже не так принципиально.

Появился ещё один серьезный вопрос: как получить событие столкновения. Если бы вьюшка не подвергалась трансформациям - всё было бы просто:


if (CGRectIntersectRect(Tank.frame, Wall.frame))

                 [self bounce];

Но после трансформаций свойство frame использовать не получится:




Здесь предлагается использовать  "bounds" - границы. Кто-нибудь знает как их использовать чтобы получить событие столкновения?

Это сообщение отредактировал(а) SlavaMinsk - 4.4.2014, 13:16
Вопрос: Как оптимизировать код objective-c?

я не могу винести загрузку в метод viewDidLoad. Знаю что вопрос глупый, но я всё перепробовал и картинки не выводит. :dash1  Помогите пожалуйста. Вот код из ячейки таблицы:
Код

NSString *filePath1 = [NSString stringWithFormat:@"%@",responsePhotos[0]];
NSURL *imgurl=[NSURL URLWithString:filePath1];
dispatch_queue_t queue =     dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0ul);
dispatch_async(queue, ^{
   NSData *dataimage1 = [NSData dataWithContentsOfURL:imgurl];
   UIImage *imim1 = [UIImage imageWithData:dataimage1];
    dispatch_async(dispatch_get_main_queue(), ^{
        if (imim1==nil) {
            cell.imgauto1.image=[UIImage imageNamed:@"camera_a.gif"];
        }else{
            cell.imgauto1.image=imim1;
        }
    });
});

Ответ:
Спасибо, за Ваш совет. Можете помочь с этим: В методе viewDidLoad я должен загрузить часть изображений, и уже передать их скачанные в ячейку, и назначить. Почему часть, потому что качать например 100 картинок, это значит что пользователь будет все это время ждать их загрузки, хочу использовать infinityscroll и pulltorefresh, принцип такой:дойдя до конца таблицы, 10 ячейки, например, начну загрузку еще 10 штук, и потом обновлю таблицу. для кеширование хочу использовать SDWebImageCash. У меня не получаеться это реализовать. Мне б хоть какой-то пример как это реализовано.
Вопрос: Прогрузка и ленивая загрузка UIView перед доба...

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

Класс этой вью
Код

- (id)initWithSpinset:(NSString*)spinset withSize:(CGSize)size {
    self = [super initWithFrame:(CGRect){0, 0, size}];
    if (!self) return nil;
    
    self.clipsToBounds = YES;
    
    [NSThread detachNewThreadSelector:@selector(loadImage:) toTarget:self withObject:spinset];
    
    return self;
}

- (void)loadImage:(NSString*)spinset {
    NSString *filePath = [[NSBundle mainBundle] pathForResource:spinset ofType:nil];
    NSData *imageData = [[NSData alloc] initWithContentsOfFile:filePath];
    UIImage *spinsetImage = [[UIImage alloc] initWithData:imageData];
    if (!spinsetImage) return;
    
    _spinsetImageView = [[UIImageView alloc] initWithImage:spinsetImage];
    if (_spinsetImageViewPosition)
        _spinsetImageView.frame = CGRectOffset(_spinsetImageView.frame, 0, _spinsetImageViewPosition);
    [self addSubview:_spinsetImageView];
    
    self.isReady = YES;
}


Потом, в другом месте, создаю экземпляр вышеприведенного класса и по KVO слежу за свойством isReady. По isReady == YES добавляю вью на главную вью и там еще всякого делаю.

Проблема в том, что isReady срабатывает очень быстро. Т.е. это не решает задачу предварительной прогрузки UIView. Подскажите где моя ошибка и как логично решать такую задачу.

Это сообщение отредактировал(а) Shklyar - 28.2.2014, 13:30
Ответ:
ну создание UI не может занимать много времени, может много времени занимает что-то другое? Например загрузка картинок или наполнение массивов
Вопрос: Не поворачивается subview

Не понятная ситуация. В настройках задана поддержка всех ориентаций. Кручу главный экран, все поворачивается правильно. Если из главного экрана вызвать subview в портретной ориентации. Subview вызывается в также в портретной ориентации и его можно вращать. Если вызвать из главного экрана subview в альбомной ориентации, то subview вызывается все равно в портретной ориетации???
Ответ:
Я разве хамлю? Я просто пытался направить на путь истинный. Так что не обижайтесь, но индусы иногда действительно пишут вот так как вы показали, и это очень печально, особенно когда заказчик дает проект и говорит исправить

Это сообщение отредактировал(а) Bitter - 4.12.2013, 11:22
Вопрос: NSInteger vs. int...

NSInteger и int: в чём разница и что где лучше применять?

В чём смысл наличия одновременно int и NSInteger?  Только совместимость с С, или же есть какой-то подвох?
Ответ:
int и NSInteger в IOS - одинаковые типы. Как уже сказал Maksys, это видно из объявления типа. А вот в MAC OS X действительно разные. 
Вопрос: Большие таблици на iPhone iPad

Привет всем) друзья у меня есть задача показать большую таблицу (связано с финансами) на iPhone iPad...
Она должна быть юзерфрендли и одновременно по возможности не уступать по функционалу!
Подскажите пож. как сотворить это дело) можно даже просто мысли нащет таких таблиц.
СПС всем...
Ответ: Artur_999, Можете сделать эти "столбики" скроллируемыми.
Вопрос: Совместная разработка в xCode

Добрый день, Уважаемые!

Хочу заняться разработкой приложений под iOS. (Писал и выпустил одно приложение полтора года назад, но все уже стало забываться - надо начинать с начала ).

Перед началом изучения языка и началом работы над программой, у меня возник вопрос. Есть ли возможность, установить какую то совместную разработку средствами xCode. Чтобы я мог работать одновременно с двух компов? С рабочего, и с личного?

В Visual Studio у нас стоит TFS - Есть ли, что то такое в xCode, или придется делать через какие то сторонние ресурсы типо GIT?

Спасибо!
Ответ: Спасибо, за прояснение) Будем пробовать - как сделаю, обязательно дам отчет