Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Черный экран при смене представления в эмуляторе

Есть 2 представления - книжное и альбомное. При запуске отображается книжное представление. При смене представления с книжного на альбомное (cmd + right) - отображается черный экран. Что не так?

Код

//
//  ViewController.h
//  swap3
//
//  Created by 0xdeadc0de on 05.04.14.
//  Copyright (c) 2014 0xdeadc0de. All rights reserved.
//

#import <UIKit/UIKit.h>

@interface ViewController : UIViewController

@property (strong, nonatomic) IBOutlet UIView *portrait;
@property (strong, nonatomic) IBOutlet UIView *landscape;
@end


Код

//
//  ViewController.m
//  swap3
//
//  Created by 0xdeadc0de on 05.04.14.
//  Copyright (c) 2014 0xdeadc0de. All rights reserved.
//

#import "ViewController.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
        // Do any additional setup after loading the view, typically from a nib.
}

- (void)didReceiveMemoryWarning
{
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}

#define degreesToRadians(x) (M_PI * (x) / 180)

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    if (toInterfaceOrientation == UIInterfaceOrientationPortrait) {
       
        self.view = self.portrait;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(0));
        self.view.bounds = CGRectMake(0.0, 0.0, 320.0, 460.0);
        
    } else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
       
        self.view = self.landscape;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90));
        self.view.bounds = CGRectMake(0.0, 0.0, 480.0, 300.0);
        
    } else if (toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
        
        self.view = self.landscape;
        self.view.transform = CGAffineTransformIdentity;
        self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
        self.view.bounds = CGRectMake(0.0, 0.0, 480.0, 300.0);
   
    }   
}
@end

Ответ:
жалко
Вопрос: Storyboard и корректная отработка смены ориентации (Mono)

Здравствуйте. Пишу свой первый проект под iOS в xamarin studio. В проекте есть сториборд и 9 Вьюконтроллеров, для каждого уже прописан класс со всеми жонглированиями входной информацией, но теперь возникли сложности с поворотом экрана. Вопрос как бы с наименьшими переделками кода переверстать вьюхи? Создать второй сториборд, также с 9-ю вьюконтролами для горизонтального расположения экрана и менять их в зависимости от положения? (вроде слышал, что это возможно, но как? нагуглить пока не удалось.) Или вычистить морды вьюконтроллеров в сториборде и создать 18 xib файлов, для каждого контролера по два и в классе соответствующего контроллера подгружать необходимый .xib (горизонтальный или вертикальный). Опять же вопрос как это правильно осуществить?
Заранее спасибо!
Ответ: Я использую autolayout, но у меня много вьюх с Пикерами внизу, которые при повороте необходимо перемещать с низу в правый край, а соседние текст-вью, соответственно уменьшать (это в принципе можно сделать и кодом..), а также есть 2 скрол-вью, которые при повороте не особо хотят растягиваться по ширине контроллера, хотя задано прилипание к краям... Так что лучше я создам отдельный сториборд. Как и где его необходимо менять? И не будут ли слетать данные в контролах как это происходит в Android? Можно примерчик кода смены сториборда? Можно и на obj-C, я на шарп сам попытаюсь интерпретировать.
Про раздел Mono я знаю, но там тишина!... я уже там пробовал вопросы задавать (не на эту тему правда, но всё же..). Поэтому подумал, что в этом разделе будет эффективнее спросить и не прогадал. ))
Вопрос: Аудио работает только в эмуляторе

Здравствуйте уважаемые форумчане. Недавно занялся разработкой под iOS, так что возможно код не написан наиболее оптимальным путем.
Столкнулся со следующей проблеммой, звук работает в эмуляторе, но когда проверяю на iPadе, звука нет. причем прогресс бар движется, минутки тикают, можно поставить на паузу и продолжить, но никакого звука. В чем может быть проблемма?

Код

// метод инициализации плеера
// ...
if(cache) {
    NSString *urlAddress = [Utils getPath:YES:number]; // локальный файл .mp3
    NSURL *urlStream = [NSURL fileURLWithPath:urlAddress];
    audioPlayer = [AVPlayer playerWithURL:urlStream];
    isInitOffline = YES;
} else {
    NSString *urlAddress = [Utils getAudioPath:episodeNum:episodeYear]; // http:// ссылка .mp3
    NSURL *urlStream = [NSURL URLWithString:urlAddress];
    audioPlayer = [AVPlayer playerWithURL:urlStream];
    isInitOffline = NO;
}
// ...

// play button listener
// ...
if([Utils isOnline] || bIsAudioCached) {
    [audioPlayer play];
    [self showPlay:NO];
    [self showPause:YES];
} else {
    [Popup makeNotOnlinePopup];
}
// ...


Заранее спасибо
Ответ:
Как не смешно, iPad вдруг решил играть звук, так и не понял почекму  :dash1 
Вопрос: Смена Root View Controller в Navigation Controller

Доброго времени суток.
В приложении есть Storyboard. В нем navigation controller выставлен как initial view controller. При первом запуске мне нужно показать один экран, при всех последующих - другой. Как изменить root view controller для navigation controller'a при первом запуске? Если делать
Код Objective-C
1
2
3
4
UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
UIViewController *mainViewController = [mainStoryboard instantiateViewControllerWithIdentifier: @"SplashViewController"];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
[self.window setRootViewController:navigationController];
то создастся новый navigation controller, а мне нужно, чтоб сохранился тот, который создан в сториборде.
Ответ: С переменной проблем не было, была проблема как назначить рутом разные вьюконтроллеры, не потеряв стиля навигейшн бара. В разные сториборды растягивать это не хотелось, опять таки из-за разных навигейшн контроллеров. Решилось заменой
Код Objective-C
1
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:mainViewController];
на
Код Objective-C
1
UINavigationController *navigationController = [(UINavigationController *)self.window.rootViewController initWithRootViewController:mainViewController];
Вопрос: Диагональ экрана для iOS разработчиков

Всем привет. Хочу прикупить imac, стоит вопрос не столько в начинке сколько в диагонали экрана. Расскажите кто на чем пишет, достаточно ли 21 дюйма для комфортной работы, болят ли глаза от 27 дюймов? Заранее благодарее.
Ответ: уже года два на 13дюймовом макбуке
Вопрос: Экран загрузки, мобильное приложение iOS/Android

Здравствуйте! Подскажите, экран загрузки приложения, хочу сделать анимацию (gif, apng, mng) при загрузки приложения для iOS/Android. Будет ли это работать, какие есть решения?
Ответ:
Вопрос: Перелистывание текста на экранах.

Здравствуйте. Простите, только начинаю изучать, поэтому с терминологией пока проблемы. Надеюсь поймёте.

Ситуация примерно такая... Есть View Controller на котором расположен текст. Вокруг всякая мишура (оформление). Хотелось бы, чтобы при проведению пальцем по экрану (слева направо), текущий текст улетал, а появлялся новый. Из массива или БД - не важно. 

Так как я начинающий, то посмотрел некоторые записи, посты и т.д. и сделал два View Controller'a, которые связал через Swipe и вроде как задача частично решилась. Частично, потому как там перелистывание не такое. Но два View Controller'a это не то. Гипотетически, массив строк может включать и 200 строк, поэтому делать для каждой строки свой View Controller кажется глупостью. Отсюда и вопрос. Как можно скролить строки (TextView) горизонтально? По сути человек должен увидеть примерно так: 
текст1 -> махнул пальцем справо-налево -> текст2 -> махнул пальцем справо-налево -> текст 3 -> махнул пальцем слева-направо -> текст2 (то есть вернулись на 1)


Поясните пожалуйста или ссылки какие-то киньте. 

Благодарю.
Ответ:
Мне помогло) спасибо)
Вопрос: Как сделать строку с несколькими одинаковыми по ширине Label, чтобы они масштабировались в зависимости от ширины экрана?

Я добавил несколько Label на View. У всех выставляю констрейны: левый 0, правый 0 и ширину.
Затем программно беру ширину экрана, делю на количество Label, и каждому констрейну ширины выставляю полученное значение. Можно ли сделать проще? Без программного выставления констрейнов.
Ответ: Alex_Y, используй UIStackView
Вопрос: Переход к основной логике программы после запуска

Здравствуйте! написал элементарную игру, проект назвал Game. Запускаю- все скомпилировалось! Симулятор выдает белый экран с надписью Game(название проекта). А как перейти к самой игре?? Спасибо!
Ответ:
Сообщение от PanKiller
Main.storyboard.xib
вот тут вы немного переборщили с xib
сториборд, это совершенно другой тип файла, потому должно быть так: Main.storyboard

И гляньте, чтобы в General настройках таргета были указаны эти файлы

Вобщем сначала появляется LaunchScreen вместо черного экрана, это как сплешскрин (можно и просто картинкой сделать вместо xib)
А потом должен появляться ваш Main.storyboard
Вопрос: Как поймать момент, когда ячейка UITableView показалась на экране?

начал для этого использовать tableView:willDisplayCell:forRowAtIndexPath:
но если там сделать [tableView cellForRowAtIndexPath:indexPath] то ячейку мы не получим, получается её ещё нет в таблице
Ответ: когда ячейка отобразилась на экране
я по indexPath ячейки получаю id материала
и добавляю в очередь загрузку картинки для материала с данным id
когда подходит очередь картинки надо проверить есть ли эта ячейка на экране и изменить на ней индикатор загрузки

Добавлено через 1 минуту
из-за того что очередь подходила раньше раньше отображения картинки, то не где было менять индикатор

Добавлено через 45 секунд
но я уже это переделал, теперь индикатор меняется в модели