Перейти к содержимому

Фотография

Разработка для OS X и iOSОбмен опытом


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 179

#161
fibe

fibe
  • В доску свой
  • 2 405 сообщений

у них курс по swift с нуля 3 апреля(вебинары) планирую записаться, никто не хочет со мной?)

Я с тобой! Только я до 3-го не дождался, уже начал заниматься, если хочешь подключайся по скайпу можно вместе разбираться, в режиме демонстрации экрана 


  • 0

#162
fibe

fibe
  • В доску свой
  • 2 405 сообщений

 
Картинки шариков: http://macservice.kz...es/dl/Cells.zip

  • 0

#163
asr

asr
  • Модератор
  • 24 325 сообщений

MODERATORIAL (Автоматическое сообщение от asr)

Пользователю Мила56 вынесено предупреждение за нарушение пункта 2.2.4 Правил в данном сообщении.

2.2. Не разрешена отправка сообщений, которые содержат:
2.2.4. Несогласованную рекламу в любом из элементов сообщения. Эксклюзивным правом на размещение рекламы на Форуме обладает рекламное агентство «MediaArt».

  • 0

#164
bakhtiyar86

bakhtiyar86
  • Гость
  • 8 сообщений
Всем привет, занимаюсь разработкой игр на Unity, сейчас разрабатывают мини игру для детей с arcore/arkit (дополненная реальность)реальность и параллельно для HTC vive мини игру. Буду рад обмену опытом и общению с разработчиками игр и приложений. Всем удачи!
  • 0

#165
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Недавно перешёл с Visual Studio на XCode 10 - objective-c, меня заинтерисовали смарт часы, хотелось-бы написать App под смарт часы. Язык очень интересный, но к сожалению там нет полной документации с примерами по программированию на Objective-C как это реализованно в Visual Studio - MSDN. Когда создаю новый проект и выбераю watchOS, XCode почему-то создаёт два проекта, один помойму для iPhone другой для watchOS. Когда компилирую код, стартует iPhone XR Simulator, а мне нужен watchOS Simulator, когда выбераешь watchOS Simulator то app не запускается в watchOS. Так-же хотелось бы изучить GameKit. К сожалению новых видео и книг по этой теме в интернете нет.  


Сообщение отредактировал lexx821: 04.12.2018, 21:35:58

  • 0

#166
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Вот так выглядет, XCode должен запускать не IPhone XR Simulator а, SmartWatch 4 Simulator, я где-то в интернете нашёл что можно в Hardware выбрать SmartWatch Simulator, вместо iPhone Simulator, появляется окно SmartWatch, но там App не отображается, App отображается только на IPhone XR.

 

Bildschirmfoto 2018-12-04 um 21.00.jpg


Сообщение отредактировал lexx821: 05.12.2018, 02:28:07

  • 0

#167
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Возможно в эти выходные, покажу чему научился программировать под Cocoa и iOS на Objective-C, я выставлю сюда коды программ со скриншотами (с результатами). С маком я начинающий, совсем недавно перешёл на мак. Про SmartWatch и GameKIT пока забуду.


  • 0

#168
lexx821

lexx821
  • Свой человек
  • 816 сообщений

 Вот калькулятор для iOS на Objective-C:

// ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property NSInteger a;
@property NSInteger b;
@property NSInteger op;
@property NSString* buf;
@property BOOL isbeginn;
@property (weak, nonatomic) IBOutlet UITextField *txtField;
@end


// ViewController.m
#import "ViewController.h"

@interface ViewController ()
@end

@implementation ViewController
@synthesize a;
@synthesize b;
@synthesize op;
@synthesize buf;
@synthesize isbeginn;

- (void)viewDidLoad {
    [super viewDidLoad];
    op = 0;
    a = 0;
    b = 0;
    isbeginn = true;
    buf = [NSString stringWithString:@"0"];
}
-(void) setNumber:(int) v {
  if(v == 0) {
    isbeginn = true;
    buf = [NSString stringWithFormat:@"%d", v];
    [_txtField setText: buf];
    return;
  }
   
  if(isbeginn == true) {
    buf = [NSString stringWithFormat:@"%d", v];
    isbeginn = false;
  }
  else
    buf = [buf stringByAppendingFormat:@"%d", v];
  
  [_txtField setText: buf];
}
- (IBAction)cmd0:(id)sender {
    [self setNumber:0];
}
- (IBAction)cmd1:(id)sender {
    [self setNumber:1];
}
- (IBAction)cmd2:(id)sender {
    [self setNumber:2];
}
- (IBAction)cmd3:(id)sender {
    [self setNumber:3];
}
- (IBAction)cmd4:(id)sender {
    [self setNumber:4];
}
- (IBAction)cmd5:(id)sender {
    [self setNumber:5];
}
- (IBAction)cmd6:(id)sender {
    [self setNumber:6];
}
- (IBAction)cmd7:(id)sender {
    [self setNumber:7];
}
- (IBAction)cmd8:(id)sender {
    [self setNumber:8];
}
- (IBAction)cmd9:(id)sender {
    [self setNumber:9];
}
- (IBAction)cmdDiv:(id)sender {
    op = 1;
    a = [buf intValue];
    [self setNumber:0];
}
- (IBAction)cmdMult:(id)sender {
    op = 2;
    a = [buf intValue];
    [self setNumber:0];
}
- (IBAction)cmdAdd:(id)sender {
    op = 3;
    a = [buf intValue];
    [self setNumber:0];
}
- (IBAction)cmdSub:(id)sender {
    op = 4;
    a = [buf intValue];
    [self setNumber:0];
}
- (IBAction)cmdResult:(id)sender {
    b = [buf intValue];
    switch(op) {
      case 1:
        if(a == 0 || b == 0) {
            [_txtField setText:@"Error"];
            isbeginn = true;
            return;
        }

        b = a / b;
      break;
      case 2:
         b = a * b;
      break;
      case 3:
          b = a + b;
      break;
      case 4:
          b = a - b;
      break;
    }
    buf = [NSString stringWithFormat:@"%d", b];
    [_txtField setText:buf];
}
- (IBAction)cmdReset:(id)sender {
    a = 0;
    b = 0;
    isbeginn = true;
    [self setNumber:0];
}
@end

Вот дизайн:

01.jpg 02.jpg

 

Вот результат работы App:

03.jpg 04.jpg


  • 0

#169
Tuco

Tuco
  • В доску свой
  • 1 179 сообщений

 Objective-C 

 

А почему не на свифте фигачишь? Время экономит


  • 0

#170
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Я нашёл ошибку в калькуляторе, сегодня я исправлю её.

 

 

 

А почему не на свифте фигачишь? Время экономит

Слишком много языков в голову не вместится, под Android ведь придумали свой язык - котлин, кто-нибудь пишит на нём App? На Java проще App разрабатывать, так и на obj-c... 


Сообщение отредактировал lexx821: 09.12.2018, 20:21:00

  • 0

#171
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Вот код подправил:

@synthesize txtField;
-(void) setNumber:(int) v
{
  if(v == 0 && isbeginn == true) //
  {
    buf = [NSString stringWithFormat:@"%d", v];
    [txtField setText: buf];
    return;
  }
    
  if(isbeginn == true)
  {
    buf = [NSString stringWithFormat:@"%d", v];
    isbeginn = false;
  }
  else
    buf = [buf stringByAppendingFormat:@"%d", v];
  
  [txtField setText: buf];
}
- (IBAction)cmdDiv:(id)sender {
    op = 1;
    a = [buf intValue];
    isbeginn = true;
    [self setNumber:0];
}

- (IBAction)cmdMult:(id)sender {
    op = 2;
    a = [buf intValue];
    isbeginn = true;
    [self setNumber:0];
}

- (IBAction)cmdAdd:(id)sender {
    op = 3;
    a = [buf intValue];
    isbeginn = true;
    [self setNumber:0];
}

- (IBAction)cmdSub:(id)sender {
    op = 4;
    a = [buf intValue];
    isbeginn = true;
    [self setNumber:0];
}
- (IBAction)cmdReset:(id)sender {
    a = 0;
    b = 0;
    op = 0;
    isbeginn = true;
    [self setNumber:0];
}

  • 0

#172
Tuco

Tuco
  • В доску свой
  • 1 179 сообщений

Слишком много языков в голову не вместится, под Android ведь придумали свой язык - котлин, кто-нибудь пишит на нём App? На Java проще App разрабатывать, так и на obj-c... 

 

Сейчас все новые проекты на Котлине пишут.  


  • 0

#173
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Хочу разработать App в котором вводят имя и возраст, допустим "Чак Норрис" и 78, потом при нажатие кнопки "OK", вызывается новая вьюшка и отображается строка "Привет Чак Норрис вам 78 лет". Добавляю новую вьюшку, нажимаю на кнопку "Ок", новая вьюшка отображается но выдаётся такая строка "Привет null вам null лет". Пытаюсь добавить новый контроллер и привязать его к вьюшки, программа вылетает с ошибкой, в логах такое: "...terminating with uncaught exception of type NSException...". 

Посмотрел видеоурок на ютубе "Mamma mia! Готовим вкусное приложение на Objective C [GeekBrains]", повторил как она сделала, ничего не работает, та же ошибка...

 

Ещё кое-что в Xcode 10 произошли изменения, исчез список с компонентами:

В предыдущих версиях был список с компонентами с правой стороны внизу:

xcodeold.png

 

В новой версии Xcode список с компонентами запрятан в кнопке сверху справа:

xcode10.jpg

 

Сейчас все новые проекты на Котлине пишут.  

 

Недавно наткнулся на flutter, это новая SDK чтобы писать программы под iOS и Android, за основу там взят язык Dart, когда гугл закончит с проектом Android и перейдёт на новый - FuchsiaOS, скорей всего будут программисты на Flutter разрабатывать App для FuchsiaOS... Кстате есть ещё Ionicframework спомощью него можно тоже лепить App под iOS и Android, но как я понимаю там App получаются на HTML5 и Javascript, типа в Blank Activity добавят UIWebView/WebView а дальше будет полность срабатывать по javascript....

Кстате по flutter есть видеоурок на ютубе: "Мобильный фреймворк Flutter от Google — взгляд Android разработчика [GeekBrains]"

 


  • 0

#174
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Хочу разработать App в котором вводят имя и возраст, допустим "Чак Норрис" и 78, потом при нажатие кнопки "OK", вызывается новая вьюшка и отображается строка "Привет Чак Норрис вам 78 лет".

 

Получилось вот результат:

//ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UITextField *txtName;
@property (weak, nonatomic) IBOutlet UITextField *txtAge;
@end

// ViewController.m
#import "ViewController.h"
#import "NewViewController.h"
@interface ViewController ()
@end

@implementation ViewController
@synthesize txtName;
@synthesize txtAge;

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  if([segue.identifier isEqualToString:@"ShowView2"]) {
    NewViewController *nvc = segue.destinationViewController;
    nvc.data = [NSString stringWithFormat:@"Hello %@, you are %@ year(s) old!", txtName.text, txtAge.text];
  }
}

- (void)viewDidLoad {
    [super viewDidLoad];
}
@end


//NewViewController.h
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface NewViewController : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *lbResult;
@property (strong, nonatomic) NSString *data;
@end
NS_ASSUME_NONNULL_END

//NewViewController.m
#import "NewViewController.h"
@interface NewViewController ()
@end

@implementation NewViewController
@synthesize lbResult;
@synthesize data;
- (void)viewDidLoad {
  [super viewDidLoad];
  lbResult.text = data;
}
@end
 

Bildschirmfoto 2018-12-18 um 08.11.jpg Bildschirmfoto 2018-12-18 um 07.52_2.jpg Bildschirmfoto 2018-12-18 um 07.52.jpg

 

 

Нужно было всего лишь вот это сделать:

//NewViewController.h
@property (strong, nonatomic) NSString *data;


//NewViewController.m
//...
@synthesize data;
//...
- (void)viewDidLoad {
  [super viewDidLoad];
  lbResult.text = data;
}

// ViewController.m
#import "ViewController.h"
#import "NewViewController.h"

// ...

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
  if([segue.identifier isEqualToString:@"ShowView2"]) {
    NewViewController *nvc = segue.destinationViewController;
    nvc.data = [NSString stringWithFormat:@"Hello %@, you are %@ year(s) old!", txtName.text, txtAge.text];
  }
}



  • 0

#175
lexx821

lexx821
  • Свой человек
  • 816 сообщений

P.S. Самое главное забыл:

нужно указать в настройках сегвей идентификатор, иначе ничего не сработает, в данной ситуации у нас ID называется "ShowView2":

xcode.jpg

  if([segue.identifier isEqualToString:@"ShowView2"]) {
    NewViewController *nvc = segue.destinationViewController;
    nvc.data = [NSString stringWithFormat:@"Hello %@, you are %@ year(s) old!", txtName.text, txtAge.text];
  }

Сообщение отредактировал lexx821: 18.12.2018, 13:59:33

  • 0

#176
lexx821

lexx821
  • Свой человек
  • 816 сообщений
Сегодня я попытался прочитать json файл со своего удалённого веб сервера, спарсить его и добавить в таблицу (UITableView, UITableViewCell). 
Есть некий test3.json который расположен на сервере/хостинге:
[
{
  "description": "2 rooms apartment in Berlin",
  "city": "10115 Berlin",
  "price" : "1042",
  "living_space" : "45",
  "rooms" : "2",
  "image" : "http://..../1.jpg"
},
{
  "description": "3 rooms apartment in Berlin",
  "city": "10115 Berlin",
  "price" : "2000",
  "living_space" : "126,5",
  "rooms" : "3",
  "image" : "http://..../2.jpg"
},
{
  "description": "1 rooms apartment in Berlin",
  "city": "10115 Berlin",
  "price" : "700",
  "living_space" : "30",
  "rooms" : "1",
  "image" : "http://..../3.jpg"
}
]

Чтобы прочитать json достаточно этого кода:

NSError *error;
NSString *url_string = [NSString stringWithFormat:@"htpp://.../jsontest/test3.json"];
NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url_string] ];
NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
NSLog(@"json: %@", json);

Вот код чтобы спарсить json:

dataNameArray = [[NSMutableArray alloc] init];
dataImageArray = [[NSMutableArray alloc] init];
for(NSArray *a in json) {
  [dataNameArray addObject:[a valueForKey:@"description"]];
  [dataImageArray addObject:[a valueForKey:@"image"]];
}

Вот полный код:

// ViewController.h
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController <UITableViewDataSource, UITableViewDelegate>
@property (weak, nonatomic) IBOutlet UITableView *tblResults;
@property (strong, nonatomic) NSMutableArray *dataNameArray;
@property (strong, nonatomic) NSMutableArray *dataImageArray;
@end
// ViewController.m
#import "ViewController.h"
#import "ViewControllerResults.h"
@interface ViewController () <UITableViewDataSource, UITableViewDelegate>
@end
@implementation ViewController
@synthesize tblResults;
@synthesize dataNameArray;
@synthesize dataImageArray;

- (void)viewDidLoad {
    [super viewDidLoad];
    NSError *error;
    NSString *url_string = [NSString stringWithFormat:@"htpp://.../jsontest/test3.json"];
    NSData *data = [NSData dataWithContentsOfURL:[NSURL URLWithString:url_string] ];
    NSMutableArray *json = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:&error];
    dataNameArray = [[NSMutableArray alloc] init];
    dataImageArray = [[NSMutableArray alloc] init];
    for(NSArray *a in json) {
        [dataNameArray addObject:[a valueForKey:@"description"]];
        [dataImageArray addObject:[a valueForKey:@"image"]];
    }
    NSLog(@"json: %@", json);
}

-(void) prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
    if([segue.identifier isEqualToString:@"selectItem"]) {
        ViewControllerResults *vcr = segue.destinationViewController;
        //NSIndexPath *selectedIndexPath = [tblResults indexPathForSelectedRow];
        vcr.data =  @"AAA";
    }
}

#pragma mark - UITableView DataSource Mehtods
-(NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return dataNameArray.count;
}

-(void)reloadData {
    [tblResults reloadData];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
    static NSString *cellId = @"cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId forIndexPath:indexPath];   
    NSData *imageData = [[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:dataImageArray

[indexPath.row                                                                                          

]]];
    cell.imageView.image =  [UIImage imageWithData:imageData];
    cell.textLabel.text  =  dataNameArray[indexPath.row];
    cell.detailTextLabel.text = [NSString stringWithFormat:@"%d", (int)indexPath.row + 1];
    return cell;
}
@end
// ViewControllerResults.h
#import <UIKit/UIKit.h>
NS_ASSUME_NONNULL_BEGIN
@interface ViewControllerResults : UIViewController
@property (weak, nonatomic) IBOutlet UILabel *lbResults;
@property (strong, nonatomic) NSString *data;
@end
NS_ASSUME_NONNULL_END
// ViewControllerResults.m
#import "ViewControllerResults.h"
@interface ViewControllerResults ()
@end

@implementation ViewControllerResults
@synthesize lbResults;
@synthesize data;

-(void)viewDidLoad {
    [super viewDidLoad];
    lbResults.text = data;
}
@end
Теперь нужно сделать следующее:
1. Добавить компонент UITableView
2. Внутрь UITableView, добавить компонент UITableViewCell
0001.jpg
 
3. В свойствах UITableView в Content выбрать Dynamic Prototypes, а в Prototype Cells ввести 1
4. В свойствах UITableViewCell в Style выбрать Right Details, а в Identifier ввести cell
0002.jpg
5. Привязать datasource и delegate к ViewController
UITableViewDemoObjectiveC-2.png
 
Вот результат работы программы:
Bildschirmfoto 2019-01-03 um 16.09.26.jpg
 
А на сервере видно логи, то что успешно прочитался json файл:
json005_2.jpg

 


Сообщение отредактировал lexx821: 03.01.2019, 22:36:43

  • 0

#177
lexx821

lexx821
  • Свой человек
  • 816 сообщений

А почему не на свифте фигачишь?

 

Уже фигачу... нужно знать только это:

var name:String = "someone"
var age:Int = 32
var say:String = "Hello \(name) you are \(age) old!"
let x = 3

print(say)
for i in 1...3 {
  print("says \(i) times: \(say)")
}

print(x)

var array = ["Anna", "Anton", "Andy"]
for s in array {
  print(s)
}

array.append("John")

for s in array {
  print(s)
}

var ii=0
repeat {
  print("Say \(ii) time(s).")
  ii=ii+1

} while ii < 3

for iii in (1...10).reversed() {
  print(iii)
}

for xx in stride(from: 1, to: 10, by: 3) {
    print(xx)
}

func say_hello(name:String, age:Int) -> String {
  return "Hello \(name), you are \(age) yaers old!"
}

print("\(say_hello(name: "Roman", age:30))")

var val:String?  // Maybe val is eq null

val="String"
if val != nil {
  print(val!)
}

let grade = 90
switch grade {
case 0...50:
  print("Bad")
case 51...100:
  print("Good")
default:
  print("?")
}

class Person {
  var age: Int
  var name: String

  init(name: String, age: Int) {
    self.name = name
    self.age = age
  }

  func say() {
    print("Hello \(name), you are \(age) years old")
  }
}

let p = Person(name: "Anton", age: 40)
p.say()

мелкософт уже разработал компилятор Swift под винду

swift2.png


  • 0

#178
lexx821

lexx821
  • Свой человек
  • 816 сообщений

В общем, получилось разработать простенький App для часов на Swift.

 

проблема была вот в чём:

Нужно было выбрать не iPhone эмулятор, а iPhone XS Max + Watch Series 4

appwatch001.jpg

 

вот код:

import WatchKit
import Foundation

class InterfaceController: WKInterfaceController {

    // Label 
    @IBOutlet weak var lbText: WKInterfaceLabel!   
    
    override func awake(withContext context: Any?) {
        super.awake(withContext: context)
    }
    
    override func willActivate() {
        super.willActivate()
    }
    
    override func didDeactivate() {
        super.didDeactivate()
    }

    // Событие нажития кнопка "Click!"
    @IBAction func btnClick() {
        self.lbText.setText("Hallo!")
    }
}

Вот результат:

Лейбл с надписью Label, и кнопка "Click!"

appwatch002.jpg

 

После нажатие на кнопку "Click!", лейбл меняет надпись с Label на Hallo!

appwatch003.jpg

 

Теперь можно пилить App для умных часов.


Сообщение отредактировал lexx821: 31.03.2019, 03:23:36

  • 0

#179
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Отображение изображения в iPhone на Swift. Нужно добавить в assets (в ресурсы) картинки/фотки.

Добавление в assets (нужно выбрать assets.xcassets и перетянуть файлы/фотки в assets):

ACR_Asset_Catalog_Elements_2x-min.jpg

 

Код:

Import UIKit

class ViewController: UIViewController {

  @IBOutlet weak var myImage: UIImageView!
  override func viewDidLoad() {
     super.viewDidLoad()
     // Загрузка картинки из Assets (из ресурсов)
     let image = UIImage(named: "Bildschirmfoto 2019-04-12 um 22.08.15.png")
     // Отображение картинки в UIImageView
     self.myImage.image = image
  }
}

Результат:

Bildschirmfoto 2019-04-12 um 22.32.20-min.jpg


Сообщение отредактировал lexx821: 13.04.2019, 02:34:15

  • 0

#180
lexx821

lexx821
  • Свой человек
  • 816 сообщений

Нашёл замечательный фреймворк, раньше он был платным, я ждал пока цену скинут, ну а сейчас он стал бесплатным. Можно программировать игры под iOS - https://github.com/phoboslab/impact Тут автор рассказывает про свой фреймворк https://vimeo.com/dsz под новый год займусь этим фреймворком.


  • 0


Количество пользователей, читающих эту тему: 1

пользователей: 0, неизвестных прохожих: 1, скрытых пользователей: 0

Размещение рекламы на сайте     Предложения о сотрудничестве     Служба поддержки пользователей

© 2011-2022 vse.kz. При любом использовании материалов Форума ссылка на vse.kz обязательна.