Ответ 1
Xcode 6.3.1 устраняет проблему с пользовательскими шрифтами и представлениями IB_DESIGNABLE
в раскадровке. Обновление через Mac App Store, и вы должны быть хорошими.
После обновления до Xcode 6.3 (версия выпуска) Xcode теперь блокируется каждый раз, когда я открываю файл XIB/Storyboard, который включает в себя IB_DESIGNABLE
view , который использует пользовательский шрифт для любых проектов и включает в себя (необязательно иметь ссылку на этот шрифт в этой XIB/Storyboard). Замораживание происходит после открытия файла .xib, а затем попытки переключения на любой другой файл. Xcode зависает и должен быть принудительно завершен.
Я открыл отчет об ошибке с Apple. (Ошибка 20483867).
Сейчас у меня есть две работы.
Вероятно, это ошибка Apple, но у кого-то есть лучшая работа или решение?
Xcode 6.3.1 устраняет проблему с пользовательскими шрифтами и представлениями IB_DESIGNABLE
в раскадровке. Обновление через Mac App Store, и вы должны быть хорошими.
Я уже предложил изменить для более точного описания.
Это происходит только тогда, когда ваш проект содержит пользовательский шрифт. Он замерзает, просто посещая любую раскадровку /XIB, которая содержит индивидуальное представление IBDesignable, даже не ссылаясь на этот шрифт в вашей раскадровке /XIB.
Мое обходное решение для использования использует старую версию Xcode, также установленную (Xcode 6.3 beta или Xcode 6.2), и используйте это для обновления файлов Interface Builder и никогда не открывайте его в 6.3. откройте те Раскадровка /XIB в новом окне в Xcode с option
+ shift
+ click
файл в дереве проекта.
Всякий раз, когда вы сталкиваетесь с замораживанием, я использую эту команду, чтобы очистить сохраненное состояние только для этого проекта.
rm -rf YourProject.xcodeproj/project.xcworkspace/xcuserdata
Ответ от Apple: Ссылка на форумы разработчиков на Apple
Спасибо всем за ваши отчеты. Мы отслеживаем это с нашей стороны и прилагаем все усилия, чтобы решить ее. К сожалению, у нас нет обходного пути, но здесь есть два варианта:
Если Xcode висит при запуске, потому что раскадровка /XIB с использованием специального шрифта /IBDesignable была ранее открыта: удалите файл "UserInterfaceState.xcuserstate" внутри xcodeproj проекта, который вы открываете, он будет на пути, подобном этому: My App.xcodeproj/project.xcworkspace/xcuserdata/yourusername.xcuserdatad/UserInterfaceState.xcuserstate
Если вам действительно нужно отредактировать файл раскадровки /XIB, содержащий пользовательский шрифт, с помощью Xcode 6.3:
- Сделайте копию своего файла раскадровки /XIB в качестве резервной копии
- Откройте файл раскадровки /XIB в текстовом редакторе
- Удалите теги XML с именем "fontDescription", которые ссылаются на ваш собственный шрифт, например:. Удаление этого тега вернет шрифт к стандартным системным шрифтам.
- Создание точек доступа к объектам с использованием настраиваемого шрифта и во время выполнения задает шрифт этих объектов для вашего пользовательского шрифта, например, при переопределении viewDidLoad или awakeFromNib на вашем контроллере представления.
ВАЖНОЕ ПРИМЕЧАНИЕ: мы не рекомендуем вручную редактировать файлы раскадровки /XIB. Однако мы признаем, что эта проблема мешает многим из вас отредактировать ваши документы и хочет предоставить обходное решение с предостережением о том, что любое редактирование вручную может привести к повреждению вашего документа.
Такая же проблема для меня. Удаление IB_DESIGNABLE устраняет проблему. Возвращение к 6.2 не работает для меня, поскольку я тестирую приложения на устройстве с iOS 8.3. Xcode 6.2 не может запускать приложения на устройствах с iOS 8.3: (
Другим обходным решением является изменение расширений файлов на все ваши файлы шрифтов и загрузка измененных имен файлов из Info.plist. Таким образом, вы можете сохранить IBDesignables и по-прежнему использовать свои пользовательские шрифты, но не сможете их увидеть в Font Picker в Interface Builder.
Все пользовательские шрифты, которые были явно настроены из Interface Builder, будут продолжать работать, но для их изменения или для установки других пользовательских шрифтов вам придется делать это либо из кода, либо для изменения файлов Storyboard или Nib из текста редактора, чтобы задать имя шрифта.
У меня нет ответа, но выяснилось, что просто принудительное завершение и перезапуск снова запустит Xcode в той же ситуации. Чтобы просто перезапустить Xcode, удалите папку ~/Library/Saved Application State/com.apple.dt.Xcode.savedState
.
Эта ошибка была исправлена в бета-версии 6.4 Xcode, которая появилась сегодня. Перейдите в центр dev и войдите в систему, чтобы загрузить его.
Xcode 8.1 - если у вас есть вид с навигацией (в моем случае это была верхняя панель Bar opaque Navigation), попробуйте установить свойство "верхняя панель" на "Нет".
Как обходной путь, я просто прокомментировал все @IBDesignable разметки в моих горстках настраиваемых компонентов, которые используют это. Когда я это сделал, да, я потерял способность настраивать настройки в Interface Builder, но это позволило мне хотя бы открыть файлы .xib без сбоев XCode.
Я просто не буду комментировать эти @IBDesignable строки, когда Apple придет с исправлением.
@O. Ответ Курненкова сработал у меня. Это не имело никакого отношения к IB_Designable и пользовательским шрифтам, Cocoapods и т.д.
По какой-то причине наличие "непрозрачной навигационной панели" вызывает файл nib
(он не влияет на storyboard
s), чтобы постоянно менять позицию y
; это можно увидеть в Size Inspector
, где позиция y
будет мерцать между 0 и 64. Это происходит со мной с Xcode 8.2 (8C38).
Я предполагаю, что это приводит к тому, что Xcode постоянно обновляет макет, тем самым истощая ресурсы и заставляя его зависать/замораживаться.
Решение состоит в использовании любого из "прозрачных" опций, Inferred или None.
Надеюсь, это поможет!