Как я могу использовать SnapKit в проекте Objc? - PullRequest
0 голосов
/ 20 мая 2018

Я создаю новый проект с CocoaPods (Xcode 9.3.1 и Swift 4.1) и, конечно, использую в нем SnapKit.

и я хочу использовать сторонний класс TreeView, этот класс написан Objc.

Как облако я использую SnapKit в классе TreeView ???

Я пытаюсь использовать следующие шаги, но не работает:

  1. создать новый файл с именем SnapKit-Bridging-Header.h

  2. перейти к TreeView.m, импортировать файл заголовка (обратите внимание: он заканчивается на '-Swift'):

    # import "SnapKit-Swift.h"

  3. компиляция теперь в порядке!и я могу видеть LayoutConstraint (определенный в SnapKit) и некоторые другие классы в файле TreeView.m

  4. , но когда я использую view.snp.xxx, он жалуется, что «свойство snp» не найдено... "

Итак, мой вопрос: Как я могу использовать view.snp.xxx в файле ObjC ???Спасибо:)

1 Ответ

0 голосов
/ 20 мая 2018

Код Swift не полностью совместим с Objective-C.В заголовке моста вы можете использовать только те элементы Swift, которые поддерживаются Objective-C.Эта библиотека требует Swift, она не говорит, что поддерживает Objective-C, поэтому, скорее всего, вам нужно предпринять дополнительные усилия по адаптации, чтобы поддержать ее.

В iOS 9+ у вас есть API-интерфейс NSLayoutAnchor, который почти так же простиспользовать в качестве SnapKit (см. https://developer.apple.com/library/content/documentation/UserExperience/Conceptual/AutolayoutPG/ProgrammaticallyCreatingConstraints.html; https://cocoacasts.com/working-with-auto-layout-and-layout-anchors/; https://theswiftlibrary.com/the-simple-way-of-creating-constraints-in-code)

Этот API прост в использовании и совместим с Objective-C.

Если выЕсли вы хотите поддерживать iOS 8, вы можете использовать библиотеку бэкпорта, например , эту .

.
...