• C чего начать изучать Swift?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    С чего лучше всего начать новичку в программирован...
    Новичок в программировании? Так начинайте с Си. Хорошенько поработаете с памятью, поучите алгоритмы по Кормену. Спустя 2 месяца можно будет переходить к обжективу. После Си будет удобно и легко. За пару месяцев разберетесь в основах обжектива и поработаете немного с основной библиотекой для ios UIKit и остальными. К тому времени можно наверное уже будет потихоньку переходить на свифт.
    Итого:
    1) Неделя на изучение основ Си
    2) 7 недель на изучение основных алгоритмов и основ алгоритмизации + работа с памятью и прочее и тому подобное. В общем основы программирования вообще.
    3) Основы обжектива 2-3 дня
    4) UIKit 2 месяца
    5) Основы свифта 2-3 дня
    6) Профит.

    Потому что со временем я получаю всё больше и больше лайков на этот ответ, апдейт:
    Выше сказанное уже совершенно не актуально.
    1) Основы свифта 2-3 дня
    2) 7 недель изучение основных алгоритмов и их реализация (самостоятельная) на свифте
    3) UIKit 2 месяца
    4) Профит.
    Ответ написан
    9 комментариев
  • Разработка игр в среде Xcode - что за ошибка?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Чарбуст не использует биткод в своей библиотеке, а у вас в настройках проекта стоит использование биткода.
    Build Settings -> Build options -> Enable bitcode -> No
    Ответ написан
    5 комментариев
  • Как настроить всплывающий subview( cub file)по нажатию на кнопку, для всех размеров айфонов?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Одного размера в пикселях или по отношению к размерам экрана?

    UPD. Если попап находится в отдельном файле. То связать его размеры с размерами родительского вью не получится, потому что о существовании родителя на момент верстки ничего не известно.
    Как вариант можно сделать, чтобы init/new этой вьюшки вызывали initWithFrame: заранее заданого размера.

    UPD2. Нашел два интересных метода:
    willMoveToSuperview:
    didMoveToSuperview

    В одном из них можно будет настроить необходимые размеры вьюшки. Либо кодом прописать все необходимые constraints. Второй вариант предпочтительнее.
    Ответ написан
    1 комментарий
  • Где заработать портфолио?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Вы наверное не знаете. Но у вас уже есть один идеальный и не привередливый заказчик, которого вы к сожалению выпускаете из виду и обделяете вниманием. Это ВЫ САМ.
    Ответ написан
    4 комментария
  • Нужен компилятор на Sublime text, на Mac?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Ставишь бесплатный Xcode из App store и с ним тебе сразу установится clang.
    Ответ написан
    Комментировать
  • Почему приложение ругается на AppDelegate?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    В проблеме сказано, что вы вызываете метод test с каким-то параметром, у объекта, у которого такого метода нет. Смотрим внимательнее в код, и ищем ошибку.
    Ответ написан
    4 комментария
  • Почему конфликтует функция?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Коротко: ObjC не поддерживает перегрузку методов, поэтому необходимо использовать различные имена для методов.

    Подробнее: Когда вы наследуете что-то от класса написанного на ObjC (в вашем случае это наверное UIViewController), класс автоматически становится совместимым с ObjC. Соответсвенно появляется 2 различных метода с одним и тем же селектором. Что плохо и вызывает ошибку компиляции.

    Возможные выходы из проблемы:
    1) Просто переименовать второй метод.
    2) (Если это всё таки UIViewController) Вынести логику приложения из её контроллера в модель. Соответсвенно создать класс, который будет производить все вычисления и не наследовать ничего от ObjC.

    ЗЫ Поэтому я считаю, что учить swift без objc бесполезно. Вам все равно приходиться писать с логикой objc, только словами свифта.
    Ответ написан
    1 комментарий
  • Как легче всего решить матрицы?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Ни как тут не сделать быстрее или легче. Такие упражнения на отработку свойств определителя. Так что открываем список свойств и выбираем какие, куда подойдут.
    Ответ написан
    Комментировать
  • Swift как скрыть клавиатуру?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Где-нибудь добавляем обработчик тапов. Лучше всего в viewDidLoad.
    UITapGestureRecognizer *tp = [[UITapGestureRecognizer alloc] initWithTarget:self
                                                                             action:@selector(randomTap:)];
    [self.view addGestureRecognizer:tp];

    Добавляем метод
    - (void)randomTap:(id)sender {
        [self.view endEditing:YES];
    }
    Ответ написан
    Комментировать
  • Проблемы с масштабом симулятора в Xcode?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    1) Делается для wAny hAny, значит размер универсальный, а не только для айфона.
    2) Размеры экрана айфона в IB считаются без ретины, соответсвенно в 2 раза меньше.
    3) Надо делать верстку на autolayot'ах, а не на константах, так будет лучше.
    Ответ написан
  • Как поменять название иконки приложения на iphone?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Отображаемое название приложения на устройстве меняется в Xcode.
    Для изменения есть 2 варианта:
    1) Изменить Bundle name в Info.plist файле:
    Image
    98e4aafd22d84bfaa4f662bcf58fa691.png
    2) Если в бандл не менять то можно изменить само название приложения
    Image2
    46f31a6cbcd946979c200587601cbeef.png
    Первый способ перекрывает второй.

    UPD. В любом случае нужно будет перезаливать приложение и снова ждать проверки. А это дополнительные неделя-две ожидания
    Ответ написан
    Комментировать
  • Нужно ли перед изучением objective-C, изучать C?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    С чего лучше всего начать новичку в программирован...
    Новичок в программировании? Так начинайте с Си. Хорошенько поработаете с памятью, поучите алгоритмы по Кормену. Спустя 2 месяца можно будет переходить к обжективу. После Си будет удобно и легко. За пару месяцев разберетесь в основах обжектива и поработаете немного с основной библиотекой для ios UIKit и остальными. К тому времени можно наверное уже будет потихоньку переходить на свифт.
    Итого:
    1) Неделя на изучение основ Си
    2) 7 недель на изучение основных алгоритмов и основ алгоритмизации + работа с памятью и прочее и тому подобное. В общем основы программирования вообще.
    3) Основы обжектива 2-3 дня
    4) UIKit 2 месяца
    5) Основы свифта 2-3 дня
    6) Профит.
    Ответ написан
    Комментировать
  • С чего лучше всего начать новичку в программировании для apple?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Новичок в программировании? Так начинайте с Си. Хорошенько поработаете с памятью, поучите алгоритмы по Кормену. Спустя 2 месяца можно будет переходить к обжективу. После Си будет удобно и легко. За пару месяцев разберетесь в основах обжектива и поработаете немного с основной библиотекой для ios UIKit и остальными. К тому времени можно наверное уже будет потихоньку переходить на свифт.
    Итого:
    1) Неделя на изучение основ Си
    2) 7 недель на изучение основных алгоритмов и основ алгоритмизации + работа с памятью и прочее и тому подобное. В общем основы программирования вообще.
    3) Основы обжектива 2-3 дня
    4) UIKit 2 месяца
    5) Основы свифта 2-3 дня
    6) Профит.
    Ответ написан
    4 комментария
  • Как изменить initial View Controller?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Лучший способ будет инициализировать вью контроллер не через сторибоард, а в методе
    - (BOOL)application:(UIApplication *)application
    didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

    Контроллер можете вытащить из сторибоарда, либо сделать два разных сторибоарда, один для экранов входа/регистрации, а второй для самого приложения. В таком случае главный сторибоард первый, но в случае если нет пользовательских данных, используете второй.
    Ответ написан
    Комментировать
  • Не переходит при тапе на cell (static cell), что делать?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    А как она будет переходить, если логики перехода нет?
    func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
            tableView.deselectRowAtIndexPath(indexPath, animated: true)
            let vc = self.storyboard?.instantiateViewControllerWithIdentifier("YourViewControllerID") as! UIViewController
            self.navigationController?.pushViewController(vc, animated: true)
        }
    Ответ написан
  • Как вывести изображение с камеры на несколько разных UIView?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Создаем видео сессию, становимся делегатом: и потом получаем картинку из семпла. С этой картинкой потом можете работать как вам угодно.
    - (void)prepareForReceiving {
    // create session
        _session = [AVCaptureSession new];
    //set image quality
        if ([_session canSetSessionPreset: <your quality>]) {
            [_session setSessionPreset: <your quality>];
        }
        _device = [AVCaptureDevice defaultDeviceWithMediaType: <your media type>];
        NSError *err = nil;
        
    // add default input for your media type
        AVCaptureDeviceInput *inpt = [AVCaptureDeviceInput deviceInputWithDevice:_device error:&err];
        if (inpt) {
            [_session addInput:inpt];
        } else {
            NSLog(@"Can't add input, cauz ---> %@",[err description]);
        }
        
    // create output
        _vdo = [AVCaptureVideoDataOutput new];
        NSDictionary *newSettings = @{ (NSString *)kCVPixelBufferPixelFormatTypeKey : @(kCVPixelFormatType_32BGRA) };
        _vdo.videoSettings = newSettings;
        dispatch_queue_t queue = dispatch_queue_create("newQueue", NULL);
        [_vdo setSampleBufferDelegate:self queue:queue];
        
        if ([_session canAddOutput:_vdo]) {
            [_session addOutput:_vdo];
        }
        NSLog(@"Start video session");
        [_session startRunning];
    }
    
    - (void)captureOutput:(AVCaptureOutput *)captureOutput
    didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
           fromConnection:(AVCaptureConnection *)connection {
        
    // create image from sampleBuffer
        CVImageBufferRef imageBuffer = CMSampleBufferGetImageBuffer(sampleBuffer);
        CVPixelBufferLockBaseAddress(imageBuffer, 0);
        void *baseAddress = CVPixelBufferGetBaseAddress(imageBuffer);
        size_t bytesPerRow = CVPixelBufferGetBytesPerRow(imageBuffer);
        size_t width = CVPixelBufferGetWidth(imageBuffer);
        size_t height = CVPixelBufferGetHeight(imageBuffer);
        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
        CGContextRef context = CGBitmapContextCreate(baseAddress, width, height, 8,
                                                     bytesPerRow, colorSpace, kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst);
        CGImageRef quartzImage = CGBitmapContextCreateImage(context);
        UIImage *image = [[UIImage alloc] initWithCGImage:quartzImage
                                                    scale:1.0f
                                              orientation:UIImageOrientationRight];
        CGImageRelease(quartzImage);
        CVPixelBufferUnlockBaseAddress(imageBuffer,0);
        CGContextRelease(context);
        CGColorSpaceRelease(colorSpace);
        
        // image = profit!
    }
    Ответ написан
    3 комментария
  • Что поделать в моём случае (iOS/Android/WP)?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    1) 2 месяца просто программирование на сях/плюсах под стационар для набора опыта программирования
    2) месяц на программирование под виндовс фон
    3) месяц под айос
    4) месяц под андроид
    5) месяц пинать фаллические предметы и иногда для забавы писать скриптики/маленькие программки
    6) решить что понравилось больше из пунктов 2-5 и сделать свой выбор
    7) ????
    8) PROFIT!
    Ответ написан
    2 комментария
  • По каким сайтам, книгам лучше учить Swift?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    По гайдам от Apple
    Ответ написан
    Комментировать
  • Как сделать две динамичных ячейки?

    ManWithBear
    @ManWithBear
    Swift Adept, Prague
    Динамический по вертикали или горизонтали? Как они расположены относительно друг друга? Выложите хотя бы скриншоты.

    UPD. Можете сделать всё одной таблицей, и для каждой клетки высчитывать высоту самостоятельно. Допустим что высота ячейки зависит от кол-ва текста в UILabel в ячейке.
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
        MyLabel *label = [[MyLabel alloc] initWithFrame:CGRectZero];
        CGSize currentMax = CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX);
        currentMax.width = [UIScreen mainScreen].bounds.size.width-80.0f; // ширина лайбла
        NSString *text = self.texts[indexPath.row]
        [label setText:text];
        label.numberOfLines = 0;
        label.lineBreakMode = NSLineBreakByWordWrapping;
        CGSize size = [label sizeThatFits:currentMax];
        return size.height + 20.0f; // дополнительные отступы для лейбла
    }
    Ответ написан