Многие спрашивали, как перейти на Charts 3.0. Так что все будет в примечаниях к выпуску, как только выйдет релиз, но сейчас я запишу их здесь:
Это основной выпуск с несколькими критическими изменениями. Пожалуйста, обратите внимание.
Обновления:
x-index
мертвы. Введение: x-значения. У каждой записи теперь есть x
и y
.y
, больше не наследуемых от NSNumberFormatter, для получения информации о наборе данных и области просмотра для принятия более эффективных решений по форматированию.objc(...)
и изменения основного обновления версии)FillFormatter
теперь имеет представление блока с помощью FillFormatter.withblock(...)
saveToCameraRoll()
. Поскольку Xcode 8.0 вызывает проблемы с "конфиденциальностью" в Apple Review, для этого вам нужно добавить ключ конфиденциальности фотоальбомов в свой Info.plist
.Критические изменения / способ миграции:
PieChartDataEntry
/ RadarChartDataEntry
startAtZeroEnabled
- они давно устарели. Замените их на axisMinimum
.chart.valueFormatter = formatter
на chart.valueFormatter = ChartDefaultValueFormatter(formatter: formatter)
или chart.valueFormatter = [[ChartDefaultValueFormatter alloc] initWithFormatter:formatter];
axis.valueFormatter = formatter
на axis.valueFormatter = ChartDefaultAxisValueFormatter(formatter: formatter)
или axis.valueFormatter = [[ChartDefaultAxisValueFormatter alloc] initWithFormatter:formatter];
ChartViewDelegate
, обновите интерфейс chartValueSelected
drawSliceTextEnabled
на drawEntryLabelsEnabled
IShapeRenderer
и поместите туда свой код рендеринга.MarkerView
/ MarkerImage
или реализации IMarker
. Вариантов больше, чем раньше ...barSpace
, перейдите к использованию barWidth
saveToCameraRoll()
, замените его на UIImageWriteToSavedPhotosAlbum(chart.getChartImage(trasparent: false), nil, nil, nil)
@objc(name)
. Если ваш компилятор кричит, что класс не существует, попробуйте удалить Chart из его имени. Это должно происходить в редких случаях, поскольку мы выбрали только те классы, которые редко создаются пользователем.@danielgindi Поддержите коконады?
@danielgindi, могу ли я скопировать эти классы в свой проект, как раньше?
Еще нет в Cocoapods. Как я уже сказал, он еще не выпущен.
Да, вы можете скопировать его классы, как раньше. Однако удобнее перетащить xcodeproj
в проект. Не рекомендуется перетаскивать сами исходники, так как это затруднит обновление Chrats в вашем проекте.
@danielgindi
Спасибо за отличную работу!
Теперь у меня проблема, я замечаю, что x-индексы мертвы:
- x-indexes are dead. Intoducing: x-values. Each entry now has an x and a y.
- In general, all functions that accepted x-indices before, now accept an x-value,
so you might have to adjust the names a little bit.
Тогда как я могу показать строку (например, строку даты) на xAxis, а не число с плавающей запятой (например, 1.0, 2.0 ...)?
Получите NSTimeInterval даты, NSTimeInterval на самом деле является двойным.
Не могу дождаться релиза! 👍
@danielgindi С
Направьте свой подфайл на главную ветку вместо версии на данный момент
@ petester42 Спасибо за совет, однако я не могу заставить его работать. Изменил мой подфайл на pod 'Charts', :git => 'https://github.com/danielgindi/Charts.git', :branch => 'master'
и запустил установку модуля. Результат выглядел так:
Но потом я все еще получал ошибку «Использовать устаревшую языковую версию Swift», когда пытался запустить проект:
Есть еще полезные подсказки?
@Carielle Чтобы установить Charts 3.0.0 до того, как он станет совместимым с CocoaPods, удалите старые Charts из файла модуля и проекта, а затем загрузите файл Charts.xcodeproj с этой страницы github.
Затем откройте целевой проект в XCode и перетащите файл Charts.xcodeproj из каталога, в который он загружен, в свой проект в интерфейсе XCode.
После этого добавьте Charts.framework в раздел «Встроенный двоичный файл» общих настроек вашего проекта.
@ALL действительно проверяйте # 1291 на предмет быстрых проблем 2.3 и 3.0
Укажите ошибку в описании миграции :
Если вы используете средства форматирования:
Я получаю то же, что и @Carielle , попробую, что сказал @HenryAlkire
Какую ветку вы используете?
@rrecio Этого не может быть .. Я исправил это как несколько дней назад.
Я использовал обычную установку cocoapod: pod 'Charts'
Чтобы исправить это, я удалил запись Podfile и вручную связал Charts.framework, как объяснил @Henry
Enviado do meu iPhone
Em 20 de set de 2016, в 21:59, Xuan [email protected] escreveu:
@rrecio Этого не может быть .. Я исправил это как несколько дней назад.
-
Вы получаете это, потому что вас упомянули.
Ответьте на это письмо напрямую, просмотрите его на GitHub или отключите чат.
Есть идеи, когда это будет доступно на Cocoapods?
Как мне обновить диаграммы для работы с Xcode 8.0 и Swift 3.0 с помощью Carthage?
Когда я запускаю "carthage update", он все еще тянет Charts 2.3.0. My Cartfile настроен на использование последней версии.
github "danielgindi / Charts"
обновление $ carthage
** Таблицы клонирования* * Результат клонирования
** Клонирование realm-какао* * Проверка графиков на "v2.3.0"
@danielgindi
Было бы здорово, если бы вы включили эти функции ... Поскольку эти функции должны быть в основной части библиотеки ... особенно в High Charts:
1) линейный график с разной формой маркеров
https://github.com/danielgindi/Charts/issues/1405
2) Возможность добавления пользовательского представления в определенных местах по оси X. Настройка цвета фона отсутствует в большинстве представлений.
https://github.com/danielgindi/Charts/issues/1416
Carthage использует последнюю версию выпуска. Если вы хотите 3.0 (которая еще не выпущена), используйте github "danielgindi/Charts" "master"
Загрузите полный проект, используя главную ветку, а затем перетащите Charts.xcodeproj, затем перейдите на вкладку «Общие» и добавьте Charts.framework в разделе « Встроенные двоичные @ petester42 @ Хуанг-Либо
@HenryAlkire Я сделал то, что вы предложили, и удалил диаграммы из моего подфайла, перетащил их вручную в свой проект и добавил как встроенный двоичный файл. Однако, когда я пытаюсь создать проект, я продолжаю получать эту ошибку:
dyld: Library not loaded: @rpath/libswiftCore.dylib
Reason: image not found
Кажется, на него ссылаются Charts.framework / Charts. Есть идеи, как решить эту проблему?
Я решил свою проблему - мой проект является проектом Objective-C с использованием библиотеки Swift Charts, поэтому мне пришлось перейти в «Настройки сборки»> «Параметры сборки»> «Всегда встраивать стандартные библиотеки Swift» и установить для него значение ДА. Это заменяет устаревший флаг «Embedded Content Contains Swift».
@Carielle Также можно увидеть эту проблему https://github.com/danielgindi/Charts/issues/1487
@danielgindi Можно ли оценить выпуск
Спасибо за ваши старания 👍
Вы можете использовать диаграммы 3 с cocoapods прямо сейчас, указав на главную ветку. Мы не можем гарантировать, что это будет стабильно, поскольку оно не окончательное.
@ petester42 Я предоставляю модуль фреймворка, который в спецификации модуля зависит от диаграмм. К сожалению, вы не можете указать другой репозиторий или ветки в спецификациях подов, как в файлах подов. Я мог бы перезаписать свой Podfile для моего примера проекта, но это не распространяется. Так что я пока привязан к Swift 2.2. Но спасибо за подсказку :)
Обновление для других, использующих диаграммы 3 с Cocoapods
Я работаю над переносом проекта с Swift 2.2 и Xcode 7 на Swift 3.0 и Xcode 8.0. Следуя подходу @Carielle - и как @ petester42 упоминает выше - диаграммы 3 могут быть установлены с помощью cocoapods.
Изменение подфайла, чтобы он имел:
pod 'Charts', :git => 'https://github.com/danielgindi/Charts.git', :branch => 'master'
привел к следующему для меня (1 октября 2016 г.)
Тем не менее, все еще есть некоторые проблемы со временем сборки, над которыми я работаю, как и следовало ожидать, пока не будет выпущена финальная версия.
Например, plotView.xAxis.setLabelsToSkip(10)
вызывает проблемы, поскольку метод setLabelsToSkip теперь не распознается. Могу ли я предположить, что это временно, пока идет работа над финальной версией, или есть какой-то другой метод, который мне следует использовать?
Спасибо @danielgindi и другим за вашу отличную работу! Я был бы рад помочь внести свой вклад в документацию по миграции, поскольку я учусь, адаптируя свой собственный проект.
Перед обновлением диаграммы iOS до версии 3.0 я могу
let radarChartData = RadarChartData (xVals: dataPoints, dataSet: radarChartDataSet)
однако после обновления невозможно установить xVals в RadarChartData, только
let radarChartData = RadarChartData (dataSet: radarChartDataSet)
Как я могу установить xVals в последней версии. Я пытался
dataEntry = RadarChartDataEntry (значение: Double (CleaningValue), данные: "setTitle" как AnyObject?)
но не работает, я просмотрел много документов, но не могу найти, как это сделать, не могли бы вы привести мне пример для этого, спасибо, посоветуйте.
@AnChiChang, пожалуйста, внимательно прочтите примечания выше.
спасибо, понял через тикет 1496
как я могу отформатировать x-значения из массива double в массив строк в v3.0?
@bingozb, пожалуйста, посмотрите демо
var a: Double = 1,5
var b: String = String (формат: "% f", a)
print ("b: (b)") // b: 1.500000
@danielgindi Я использую
NSMutableArray * values = [[NSMutableArray alloc] init];
[значения addObject: [[ChartDataEntry alloc] initWithX: i y: val]];
LineChartDataSet * set1 = [[LineChartDataSet alloc] initW ithValues: метка
демонстрация просто использует двойные x-значения. ChartDataEntry не имеют метода инициализации, которым я могу отправить строковый параметр.
Что ж, я увидел проблемы и обнаружил, что в одном из них говорится, что мы можем отправить целочисленные значения даты, затем отформатировать их и отобразить на метке x. Но я не могу найти способ об этом. На самом деле я не уверен, что это может работать таким образом.
Помоги мне, пожалуйста. Мне нужно показать дату оси x.
Привет @bingozb
Я надеюсь, что ваши значения X хранятся в одном массиве, поэтому, пожалуйста, сделайте это,
NSMutableArray * xVals;
Надеюсь, вы меня понимаете.
@ rs10693 Да, я нашел этот метод протокола. Похоже, я должен это реализовать. Но я считаю, что ни один делегат не соответствовал протоколу IChartAxisValueFormatter. Кто должен соблюдать этот протокол и где реализовать этот метод. Я позволил своему контроллеру сделать это, но он не работает.
@bingozb Используйте ChartViewDelegate и IChartAxisValueFormatter, и я надеюсь, что вы @import Charts;
@ rs10693 Понятно ! делегат - valueFormatter ...
@bingozb что ты можешь сказать, я не понимаю. пожалуйста, уточните меня.
@danielgindi я все еще не могу установить Charts 3.0.0
Следующая ошибка возникает при запуске pod install
Анализ зависимостей
[!] Невозможно удовлетворить следующие требования:
Charts (~> 3.0.0)
требуется Podfile
Ни один из ваших источников спецификаций не содержит спецификации, удовлетворяющей зависимости: Charts (~> 3.0.0)
.
У вас есть либо:
pod repo update
.Примечание. Начиная с CocoaPods 1.0, pod repo update
pod install
по умолчанию не встречается в
Пожалуйста, помогите, это означает, что Charts 3.0.0 еще не выпущен для установки с помощью
или я пропустил какой-либо шаг.
3.0 еще не входит в состав cocoapods, потому что он не окончательный. Вы можете указать на git repo и master, чтобы получить 3.0 прямо сейчас
Мы выпустили 3.0.0 !
Приятно знать.
Но я немного беспокоюсь, нужно ли нам обновлять наш стручок какао или его репозиторий для установки недавно выпущенной версии 3.0.0.
woot 🎉
@danielgindi, тебе нужно, чтобы я толкнул капсулу, или ты это прикрыл?
Пытался, теперь спустя долгое время сказал, что podspec не проверяет ...
Я. на это нужно время. Я могу это сделать. Для работы с Xcode 8 / swift 3 вам понадобится cocoapods 1.1
@ petester42 @danielgindi
у меня есть
pod --version
= 1.1.0
но все же команда pod install
устанавливает старую версию.
Анализ зависимостей
Скачивание зависимостей
Installing Charts (2.3.0)
Пожалуйста, направьте
Теперь он работает после обновления основного репозитория пода, спасибо за помощь
Получение такой ошибки в Swift 3.0 при реализации гистограммы с использованием этой библиотеки.
После устранения вышеуказанной ошибки появляется следующая ошибка, как показано ниже.
Как исправить такую ошибку в Swift 3.0?
let chartDataSet = BarChartDataSet (значения: dataEntries, label: nil)
пусть chartData = BarChartData (dataSet: chartDataSet)
насчет xVals вы должны реализовать stringForValue.
Спасибо. как мне реализовать stringForValue для xVals.
Пожалуйста, приведите три быстрых примера
Привет,
Я только что перешел с 2 на 3 (я использую 3.0.2) и столкнулся с двумя проблемами:
Спасибо за ваш вклад.
в классе BarChartRenderer
в открытой функции переопределения drawValues (контекст: CGContext)
добавить строку 408
`` ''
если! dataSet.isStacked
{
для j в 0 .. <Int (ceil (Double (dataSet.entryCount) * animator.phaseX))
{
охранник пусть e = dataSet.entryForIndex (j) как? BarChartDataEntry else {продолжить}
let rect = buffer.rects[j]
let x = rect.origin.x + rect.size.width / 2.0
if !viewPortHandler.isInBoundsRight(x)
{
break
}
if !viewPortHandler.isInBoundsY(rect.origin.y)
|| !viewPortHandler.isInBoundsLeft(x)
{
continue
}
let val = e.y
if val == 0 <-----------this line
{ <-----------this line
continue <-----------this line
} <-----------this line
`` ''
добавьте переменную, если хотите
var drawValuesZeroEnabled: Bool {установить}
Спасибо, Тьерри.
Так что исправлено :)
У меня все еще есть проблема с этим странным интервалом.
Итак, я только что создал гистограмму по умолчанию со значением 0, и у меня все еще есть проблема - я попытался максимально приблизиться к простой полосе, чтобы увидеть, в чем проблема.
Это похоже на демонстрацию, но как только я устанавливаю значение от 0 до 0,9999, я получаю это заполнение.
Вот пример кода:
<strong i="11">@IBOutlet</strong> var barChartView: BarChartView!
func viewDidLoad() {
super.viewDidLoad()
self.styleChart()
self.configureChart()
}
internal func styleChart() {
self.barChartView.xAxis.labelPosition = .bottom
self.barChartView.xAxis.labelCount = 2
}
internal func configureChart() {
var xValues = [String]()
var entries: [ChartDataEntry] = Array()
xValues.append("TEST 5")
xValues.append("TEST 0")
entries.append(BarChartDataEntry(x: Double(0), y: Double(5) ))
entries.append(BarChartDataEntry(x: Double(1), y: Double(0) ))
let dataSet = BarChartDataSet(values: entries, label: "")
dataSet.drawIconsEnabled = false
dataSet.drawValuesEnabled = true
let formatter = NumberFormatter()
formatter.numberStyle = NumberFormatter.Style.decimal
dataSet.valueFormatter = DefaultValueFormatter(formatter: formatter)
let barChartData = BarChartData(dataSet: dataSet)
barChartData.barWidth = 0.2
self.barChartView.data = barChartData
}
Довольно просто.
Это ошибка?
Проблема с 0:
Нет 0:
Спасибо вам за помощь ;)
Где я могу найти документацию о старом API для графиков? Я никогда не использовал этот фреймворк (за исключением того, что обновлял его несколько раз), и мне нужно обновить его с 2.3 до 3.0.4, поэтому старые документы было бы неплохо для определения старого кода, например:
[entrySet addObject:[[ChartDataEntry alloc] initWithValue: item.avgSpeed xIndex:index]];
Теперь нет init с именем initWithValue: xIndex
, но есть init, который вызывается:
initWithX: y:
, поэтому я пытаюсь выяснить, какие были старые параметры и как использовать новый init для достижения того же результата ...
Также отсутствует массив valuesObjc:
//myLineChartView is LineChartView
NSDate* date = (NSDate*)[myLineChartView.xAxis.valuesObjc objectAtIndex:index];
Как я уже сказал, я никогда не использовал этот фреймворк, так что некоторая помощь будет признательна, или, по крайней мере, будет полезна ссылка на старые документы API ...
Я не думаю, что такой ресурс существует. Вы можете проверить ветку legacy / 2.3, чтобы проверить демонстрации и тому подобное, чтобы сравнить их с другими текущими версиями.
BarChartData.init (xVals: xVals, dataSets: dataSets) не может работать. что это заменить?
Как я могу программно прокрутить значение x линейной диаграммы в центр?
Самый полезный комментарий
@Carielle Чтобы установить Charts 3.0.0 до того, как он станет совместимым с CocoaPods, удалите старые Charts из файла модуля и проекта, а затем загрузите файл Charts.xcodeproj с этой страницы github.
Затем откройте целевой проект в XCode и перетащите файл Charts.xcodeproj из каталога, в который он загружен, в свой проект в интерфейсе XCode.
После этого добавьте Charts.framework в раздел «Встроенный двоичный файл» общих настроек вашего проекта.