Есть ли аналог CSS для XIB (XCode Interface Builder XML)?

Есть ли способ применить файлы стиля XIB, созданные XCode? Что-то эквивалентное стилю HTML-файла с помощью CSS? Я хотел бы иметь возможность, скажем, изменить фоновое изображение для всех кнопок или для всех кнопок определенного класса.

(Я понимаю, что, вероятно, мог бы использовать XSLT для преобразования файла XIB или подкласса NSButton для установки фона по умолчанию, но я бы предпочел использовать механизм типа таблицы стилей, если он существует)

Спасибо, -- Джеймс


person James Williams    schedule 14.12.2011    source источник
comment
Я не знаю о какой-либо технологии, подобной CSS, но вы можете написать категорию для своих кнопок, которая включает метод [UIButton buttonWithDefaultBackground:bgImage].   -  person Torsten Walter    schedule 20.07.2012
comment
Теперь вы можете использовать IBInspectable и IBDesignable для определения всех ваших стилей в одном конкретном месте, а затем заставить Interface Builder автоматически извлекать код из этого кода (без запуска симулятора). Вот пошаговое руководство: stackoverflow.com/questions/32682764/. Этот пример предназначен для размера шрифта и UILabels, но он должен работать и для других представлений и свойств.   -  person Rogare    schedule 07.10.2015


Ответы (2)


Я тоже ищу нечто подобное. Я нашел это, самое близкое, что я мог найти:

Подлежит проверке:

Возможность добавления в интерфейс дополнительных функций персонализации, таких как закругленные углы, ширина границы, цвет границы... https://www.weheartswift.com/make-awesome-ui-components-ios-8-using-swift-xcode-6/

Впоследствии я создал это для кнопок в качестве примера:

@IBDesignable public class DesignableButton: UIButton {        
    @IBInspectable var buttonStyle: String {
        set {
            switch newValue  {
            case "green":
                layer.frame.size.height = 44
                layer.cornerRadius = 22
                layer.backgroundColor = UIColor.greenColor().CGColor
            case "white":
                layer.backgroundColor = UIColor.whiteColor().CGColor
                layer.frame.size.height = 44
                layer.cornerRadius = 22
            default:
                break
            }
        }
    }
}

Быстрый пользовательский интерфейс:

Не пробовал, но кажется отличным решением, вы можете стилизовать свое приложение с помощью CSS: https://github.com/tombenner/nui

person denislexic    schedule 24.09.2015

Насколько мне известно, такого механизма не существует. Это зависит от ваших потребностей, но вы можете использовать WebView для пользовательского интерфейса вашего приложения; это позволит полностью настроить CSS.

Пример можно найти в блоге Мэтта Геммеля< /а>. Также может представлять интерес CocUI.

person John Wells    schedule 13.08.2012
comment
Использование веб-просмотра значительно снизит пользовательский опыт. - person htafoya; 23.06.2017