2015-09-28 2 views
8

Еще раз Xcode IB разочаровывает разработчиков в ненужных предупреждениях: я не могу удалить это предупреждение из моего проекта Xcode.Xcode IB Stupid Warning

enter image description here

При двойном нажатии на предупреждение она приносит мой файл MainMenu.xib, но не дает никаких ссылок на то, что является причиной проблемы. Есть идеи?

EDIT:

Я урезанная большую часть моего .xib для публичного просмотра, но до сих пор ошибка с очень мало объектов. Вы можете найти файл здесь: https://www.dropbox.com/s/r2piuojr86dhlt9/MainMenu.xib?dl=0

+0

Можете ли вы сделать урезанный образец образца, демонстрирующий это предупреждение, доступное где-нибудь? –

+0

@MichaelDautermann Я попытался изолировать проблему, удалив объекты один за другим, но предупреждение все еще появляется, пока каждый объект не будет удален из файла –

+0

yep! Вот почему я надеялся увидеть пример проекта, в котором была проблема, тогда я мог бы попытаться разобраться с вами (и всеми остальными :-). Удалите все, кроме одного объекта в xib (где предупреждение все еще появляется). –

ответ

2

Это предупреждение показано начиная с Xcode 7, когда элементы пользовательского интерфейса, такие как метка или столбец заголовка таблицы, используют стиль или варианты шрифта, доступные на более старой ОС (и, конечно, ваши проект по-прежнему нацелен на них).

В моем проекте заголовок колонтитула таблицы использовал системный шрифт с изменением стиля «средний» вместо обычного в проекте, ориентированном на OS X 10.9+.

Странно, что мне пришлось перезапустить Xcode, так как интерфейс Builder отказался изменить стиль элемента управления. Возможно, небольшой сбой этой ранней версии 7.0.1 Xcode.

В любом случае, если установить любой стиль управления на Regular или изменить цель вашего проекта на 10.11, следует исправить это предупреждение.

0

Еще раз Xcode IB разочаровывает разработчиков в ненужных предупреждениях.

Чувствовал себя так же, пока не увидел, как моя типография отличается в 10.10 по сравнению с 10.11. Одно дело - сообщение - это мусор, не указывая на проблемный элемент раскадровки, см. P.S section of the post для полуобработки.

Текущий ответ почти получает его, но проблема заключается не в том, что стили шрифтов недоступны в старых целях, а с Xcode, которые не обрабатывают их правильно, см. full blog post.

Если вы хотите сохранить свои стили, используйте настраиваемое текстовое поле с пользовательским проверяемым свойством. Откройте инспектор удостоверений личности и установите собственный класс в TextField, предпочтительный атрибут веса шрифта появится в инспекторе атрибутов, установите требуемое значение, постройте и получите результат.

import AppKit 

@IBDesignable public class TextField: NSTextField 
{ 
    @IBInspectable public var preferredFontWeight: Int = 0 

    override public func awakeFromNib() { 
     if #available(OSX 10.11, *) { 
      return 
     } 

     guard 
     let weight: Int = self.preferredFontWeight where weight > 0, 
     let font: NSFont = self.font, 
     let name: String = font.familyName, 
     let manager: NSFontManager = NSFontManager.sharedFontManager() else { 
      return 
     } 


     // Full details here – https://developer.apple.com/library/mac/documentation/Cocoa/Reference/ApplicationKit/Classes/NSFontManager_Class/#//apple_ref/occ/instm/NSFontManager/convertWeight:ofFont: 
     // 
     // 1 – ultralight 
     // 2 – thin 
     // 3 – light, extralight 
     // 4 – book 
     // 5 – regular, display 
     // 6 – medium 
     // 7 – demi, demibold 
     // 8 – semi, semibold 
     // 9 – bold 
     // 10 – extra, extrabold 
     // 11 – heavy 
     // 12 – black 
     // 13 – ultrablack 
     // 14 – extrablack 

     if let font: NSFont = manager.fontWithFamily(name, traits: manager.traitsOfFont(font), weight: weight, size: font.pointSize) { 
      self.font = font 
     } 
    } 
} 

Если вы на самом деле не заботиться о стилях, использовать обычный вес шрифт для всего текста, он должен решить проблему, обратитесь к моим ранее answer доступным опциям.