Все технические форумы на одном сайте Удобный поиск информации с популярных форумов в одном месте
Вопрос: Use Size Classes или Simulated Metrics?

Здравствуйте.

Подскажите, в чем разница. С новым Xcode 6 вышла такая функция, как Size Classes, так вот если отключить ее, то есть нажать на кнопку Use Size Classes, то view станет привычной формы. Но можно этого же добиться и при помощи свойств view, если в Simulated Metrics выставить размер дисплея. Так вот в чем разница?

Если выбрать дисплей через Simulated Metrics, то при создании связи между кнопкой и вторым контроллером появляется действие show, а если убрать Use Size Classes, то этого действия нет. Почему?

Случай с Simulated Metrics:
(IMG:)
Ответ:
Примерно понял, спасибо большое
Вопрос: Use Size Classes или Simulated Metrics?

Здравствуйте.

Подскажите, в чем разница. С новым Xcode 6 вышла такая функция, как Size Classes, так вот если отключить ее, то есть нажать на кнопку Use Size Classes, то view станет привычной формы. Но можно этого же добиться и при помощи свойств view, если в Simulated Metrics выставить размер дисплея. Так вот в чем разница?

Если выбрать дисплей через Simulated Metrics, то при создании связи между кнопкой и вторым контроллером появляется действие show, а если убрать Use Size Classes, то этого действия нет. Почему?

Случай с Simulated Metrics:
Ответ: В общем, если кому интересно, то в iOS 8 Show это переименованный Push
Вопрос: Size Classes и свойства frame/bounds у UIView

Всем привет!

Решил в своем pet-проекте заюзать по-полной size classes, и столкнулся со следующей странностью:

Для anyW & anyH поставил размер вьюшки 400x400
Для compactW & regularH - 280х280

Запускаю на айфоне (в симуляторе), визуально отображается все правильно, но в самом подклассе вьюшки, в методе initWithCoder ее размер (self.frame, self.bounds) почему-то 400x400, как задано в sizeClass'е any&any, а не 280х280, как по факту отображается.
Из-за чего дальнейшая работа с вьюшкой становится некорректной, т.к. в методе initWithCoder на нее добавляются разные фичи, ориентируясь по размеру.

Может есть у кого-то идеи, почему такой фокус может происходить?
Ответ: Потому что UIView не изменила свой размер еще. А инициализация ее в -initWithCoder: происходит всегда по той информации, которая в nib файле есть.
Обратите внимание на метод -viewDidLayoutSubviews контроллера.

В вашем случае корректный размер будет только в перегруженном методе -layoutSubviews.

P.S. Более того, используя SizeClasses вы не должны работать напрямую с размерами UIView. Используйте UILayoutConstraints...
Вопрос: ERROR itms-9000. This bundle is invalid

ERROR ITMS-9000: "This bundle is invalid. The IPA format requires a top-level directory named Payload, containing only a .app bundle and optional plugins in a Plugins directory."

Кто-нибудь может подсказать что я не так делаю при добавлении приложения в itunes connect через apllication loader, который и выдает мне эту ошибку?
Сертификаты и профайлы настроены, делаю cmd+B , в products появляется 2 файла, myApp.app и myApp.dSYM.
Я делаю из них архив .zip и пытаюсь его загрузить через application loader и вовремя "Veryfying assets with iTunes store"
выдает ошибку что вверху. =(

Добавлено через 56 минут
В стор посылать вообще-то надо из Xcode через Product->Archive , как заархивируется выведется окно органайзера с описание что вы уже архивировали для этого проекта и там же будут кнопки validate - export - submit, submit и шлет в стор. Через export - export for AppStore тоже можно с последующей заливкой.

Можно и самому составить ипа (зип архив) с нужной структурой, какая она конкретно точно не помню, но само приложение валяется в папке Payload (о чем вам и сообщили)
... ;d
Ответ: так я все выложил уже, скинул этот ответ просто чтобы был

Добавлено через 1 минуту
А выкладываю 1 раз, и читал как добавить в itunes connect из гугла статью, в ней было описано все что я делал выше( cmd+build , 2 файла их в зип и через лоадер добавлять), в итоге у меня полезли ошибки.
Вопрос: Getting the Best From a New Balance Outlet

A New Balance outlet is the best place to shop your footwear. They have a long line of outlets from where you can consider buying shoes but the best way is settling on one that you can maximize your experience. Make sure you have taken a keen look at what every outlet offers before choosing the one with the type of  shoes that you want to buy. That will help you get the best from the outlet you have settled for. Hopping from one outlet to another without making material purchase will only water down your experience. Just stick to one store and make your visits regular to get value in return.

Your chosen outlet should be the place you first think about every time you want to buy shoes. Within no time, you will get used to the attendants as a reliable and loyal customer to even start enjoying discounted offers for whatever you buy. The service and selection to get from a  outlet will be incomparable to none. You will get all types of shoes that you will be looking for whether to run, walk or even take your fashion to the next level. They have all that a customer would be looking for and it's a case of getting everything under one roof. You can narrow down your purchase to size, design, color and price which will give you precise selection options.

If you want to buy accompanying accessories for your shoes, they will be available for free selection at your outlet of choice including matching apparel. Regardless of your set purchase goals, you will get maximum satisfaction from the outlet you trade your eyes on. There are many fit specialists that you will get at your  outlet of choice who will help you get the right shoes. They are very attentive to customer needs and requirements with their know-how making sure you leave the outlet fully satisfied. Measurements of your feet will be taken if that is what will guarantee you get the perfect footwear and this helps to determine what best fits your wear.

Furthermore, there are community events like in-house clinics which you can experience to get the best from the outlet you engage. These clinics touch mainly on how to live healthy and will be ideal for helping you realize individual goals in life.  is not only a place to buy shoes and apparel but somewhere you can get life teachings on how to secure your future. You have to look out for this in your New Balance outlet. All in all, you have all the good things to enjoy from your engagement with an outlet of New Balance.
Ответ:
A New Balance outlet is the best place to shop your footwear. They have a long line of outlets from where you can consider buying shoes but the best way is settling on one that you can maximize your experience. Make sure you have taken a keen look at what every outlet offers before choosing the one with the type of  shoes that you want to buy. That will help you get the best from the outlet you have settled for. Hopping from one outlet to another without making material purchase will only water down your experience. Just stick to one store and make your visits regular to get value in return.

Your chosen outlet should be the place you first think about every time you want to buy shoes. Within no time, you will get used to the attendants as a reliable and loyal customer to even start enjoying discounted offers for whatever you buy. The service and selection to get from a  outlet will be incomparable to none. You will get all types of shoes that you will be looking for whether to run, walk or even take your fashion to the next level. They have all that a customer would be looking for and it's a case of getting everything under one roof. You can narrow down your purchase to size, design, color and price which will give you precise selection options.

If you want to buy accompanying accessories for your shoes, they will be available for free selection at your outlet of choice including matching apparel. Regardless of your set purchase goals, you will get maximum satisfaction from the outlet you trade your eyes on. There are many fit specialists that you will get at your  outlet of choice who will help you get the right shoes. They are very attentive to customer needs and requirements with their know-how making sure you leave the outlet fully satisfied. Measurements of your feet will be taken if that is what will guarantee you get the perfect footwear and this helps to determine what best fits your wear.

Furthermore, there are community events like in-house clinics which you can experience to get the best from the outlet you engage. These clinics touch mainly on how to live healthy and will be ideal for helping you realize individual goals in life.  is not only a place to buy shoes and apparel but somewhere you can get life teachings on how to secure your future. You have to look out for this in your New Balance outlet. All in all, you have all the good things to enjoy from your engagement with an outlet of New Balance.
Вопрос: Адаптация приложения под разные разрешения

Здравствуйте, подскажите, пожалуйста, как адаптировать ios приложение в xcode под все разрешения, или киньте сыночку где можно почитать.
Ответ: Смотрите в сторону AutoLayout и Size Classes.
Вопрос: Симулятор выдаёт результат в половину экрана

Выглядит это примерно так
Ответ: Size classes не ориентированны под четверку.
Либо отключай их, либо, если хочешь поддерживать сразу все экраны, гугли что такое autolayout - технология достаточно простая.
Вопрос: Как привязать точки в CorePlot?

Всем привет! Бьюсь над этой проблемой уже третьи сутки. Я не понимаю, как привязать точки из _graphData к plot'у. При запуске проги у меня отображается пустая координатная сетка. Искал примеры кода, даже нашёл один проект XCode(ссылку на него сейчас найти уже не могу), но у меня не получается прикрутить этот код к своему проекту, поэтому пришлось написать свой ###код.
Во всех примерах есть эта строчка.
Код

plot.dataSource=self;



Но я не понимаю, зачем здесь присваивается self? Тут нужно как-то данные из _graphData загрузить в plot.
Вот мой код.
Код

CGRect  viewRect = CGRectMake(175, 20 , 280, 320 );
            CustomView *myView = [[CustomView alloc]initWithFrame:viewRect];
            myView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
            [self.view addSubview:myView];
            [myView drawRect:viewRect];
           _graph = [[CPTXYGraph alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width*0.95, self.view.frame.size.height*0.9)];
           _graph.backgroundColor = [CPTColor clearColor].cgColor;
           _graph.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
           CPTTheme * theme = [CPTTheme themeNamed:kCPTPlainWhiteTheme];
           [_graph applyTheme:theme];
           _hostingView = [[CPTGraphHostingView alloc] initWithFrame:CGRectMake(175, self.view.frame.size.height*0.08 , self.view.frame.size.width*0.8, self.view.frame.size.height*0.9)];
           _hostingView.hostedGraph = _graph;
           _hostingView.autoresizingMask = NSViewWidthSizable | NSViewHeightSizable;
           [self.view addSubview:_hostingView];
           _graph.fill = [CPTFill fillWithColor:[CPTColor whiteColor]];
           CPTXYPlotSpace *plotSpace = (CPTXYPlotSpace *)_graph.defaultPlotSpace;
           plotSpace.xRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat([intbeg doubleValue]) length:CPTDecimalFromFloat([intend doubleValue])];
           plotSpace.yRange = [CPTPlotRange plotRangeWithLocation:CPTDecimalFromFloat([intbeg doubleValue]-5*[intend doubleValue]) length:CPTDecimalFromFloat(10*[intend doubleValue])];
           self.graph.plotAreaFrame.paddingTop = 20.0f;
           self.graph.plotAreaFrame.paddingRight = 30.0f;
           self.graph.plotAreaFrame.paddingBottom = 30.0f;
           self.graph.plotAreaFrame.paddingLeft = 30.0f;
           CPTXYAxisSet *axisSet = (CPTXYAxisSet *)self.graph.axisSet;
           CPTMutableLineStyle *lineStyle = [CPTMutableLineStyle lineStyle];
           lineStyle.lineColor = [CPTColor blackColor];
           lineStyle.lineWidth = 2.0f;
           
           // Create a text style that we will use for the axis labels.
           CPTMutableTextStyle *textStyle = [CPTMutableTextStyle textStyle];
           textStyle.fontName = @"Helvetica";
           textStyle.fontSize = 14;
           textStyle.color = [CPTColor blackColor];
 
           axisSet.xAxis.title = @"Data X";
           axisSet.xAxis.titleTextStyle = textStyle;
           axisSet.xAxis.titleOffset = 4.0f;
           axisSet.xAxis.axisLineStyle = lineStyle;
           axisSet.xAxis.majorTickLineStyle = lineStyle;
           axisSet.xAxis.minorTickLineStyle = lineStyle;
           axisSet.xAxis.labelTextStyle = textStyle;
            axisSet.xAxis.minorTicksPerInterval = 1;
           axisSet.yAxis.title = @"Data Y";
           axisSet.yAxis.titleTextStyle = textStyle;
           axisSet.yAxis.axisLineStyle = lineStyle;
           axisSet.yAxis.majorTickLineStyle = lineStyle;
           axisSet.yAxis.minorTickLineStyle = lineStyle;
           axisSet.yAxis.labelTextStyle = textStyle;
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(0, 1)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(0.4, 0.5)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(0.5, 0.3)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(0.8, 0.6)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(1, 1)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(1.3, 1.6)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(1.8, 1.8)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(2, 1.9)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(2.3, 2.7)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(2.8, 4)]];
           [_graphData addObject:[NSValue valueWithPoint:CGPointMake(3, 5)]];
           CPTScatterPlot *plot = [[CPTScatterPlot alloc] init];
           plot.dataSource=self;
           plot.identifier = @"mainplot";
           plot.dataLineStyle = lineStyle;
           [_graph addPlot:plot];


Это сообщение отредактировал(а) JohnyBlackbird - 8.1.2014, 14:48
Ответ:
там же всего два метода, ну читайте документацию, разбирайтесь. Так как вы их не реализовали - вот по этому ничего и не работает. Смысл dataSource в том чтобы хранить и отдавать по требованию данные
Вопрос: SpriteKIT (Создаем массив объектов)

Господа, добрый день.
нужна помощь.

Делаю недотетрис. Использую SpriteKIT
Немного переоценил свои силы - сложно разобраться с наскоку и в Ките и в ООП местном.
В общем, для недотетриса хотел оформить блок кода\функцию\метод или тупо конструктор,
который (при передаче параметров или тупо-рандомно) выдает простые фигуры и выкладывает
их на сцену. Но местное ООП мне мозг выносит. не соображу как.

Думал просто метод\функцию написать, прям в файле, который отвечает за прорисовку сцены, но по-моему
так не получится. подскажите в какую сторону смотреть.

как то так вижу это
Objective-C
1
2
3
4
5
6
7
8
9
10
- (SKShapeNode ) Blochim:(int, int )
{
SKShapeNode temp= [SKShapeNode shapeNodeWithRect:CGRectMake(-30/2, -30/2, 30, 30)];
temp.position = CGPointMake(190, 320);
temp.strokeColor = [SKColor redColor];
temp.fillColor = [SKColor yellowColor];
temp.name = @"Quad1";
temp.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:temp.frame.size];
temp.physicsBody.friction = 1;
}
Добавлено через 2 часа 12 минут
Objective-C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 SKShapeNode* arrayfig[100];
    
    
    
    for (int i =0; i<5 ; i++)
    
    {
        arrayfig[i]=[SKShapeNode shapeNodeWithRect:CGRectMake(-30/2, -30/2, 30, 30)];
        arrayfig[i].position = CGPointMake(200*i, 30+i*100);
        arrayfig[i].strokeColor = [SKColor blackColor];
        arrayfig[i].fillColor = [SKColor redColor];
        arrayfig[i].physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:arrayfig[i].frame.size];
        arrayfig[i].physicsBody.friction = 1;
        [self addChild:arrayfig[i]];
        
    }
Сам же ответил на свой вопрос.
Но по-моему это немного говнокод.
Хотел бы как то в виде недоконструктора это оформить или что-то такое.

Нужно мнение со стороны

Добавлено через 4 часа 58 минут
Ребята, подскажите плз :
как паузу держать между циклами?
я вообще подумал даже не паузу между циклами формировать,
а просто запускать следующий блок, когда предыдущий дополз,
но не пойму как это реализовть
Ответ: Модератор, закройте пожалуйста тему
Вопрос: Как динамически изменять высоту TableView при изменяющихся высотах CustomViewCell

Здравствуйте. Пишу на Mono но думаю, что с кодом на Obj-C разберусь. В общем есть UITableView заполняю его кастомными ячейками для каждой из которых считаю высоту вот так:
Кликните здесь для просмотра всего текста
Код C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public override float GetHeightForRow (UITableView tableView, NSIndexPath indexPath)
        {
            try{
            if (TextLabelList.Count != 0) 
            {
                string item = TextLabelList [indexPath.Row];
                var cell = tableView.DequeueReusableCell("CellID") as customViewCell;
                if (cell == null)
                    cell = new customViewCell();
                var Font = cell.text_cell1.Font;
 
                    SizeF size = new SizeF (tableView.Frame.Width/2, float.MaxValue);
                    float height = cell.text_cell1.StringSize(item, Font, size, UILineBreakMode.WordWrap).Height+Font.PointSize; 
                    indexPath.Row));
    
                return height;
 
            } 
                else
                    return 1f;
            }
            catch
            {
                return 1f;
            }
        }

Ячейки отображаются нормально, но вот в TableView все не влазят. Появляется полоса прокрутки. Подскажите как и где переопределять высоту TableView в зависимости от суммы высот СustomViewCell? Заранее спасибо!
Ответ: Да, вы правы. В моем случае дело было в остальной (корявой) разметке вьюхи. Что то ограничевало размер TableView снизу.