iOS: тень материальных компонентов

Я хочу использовать MaterialComponents в моем Swift 4 чтобы добавить тень к моим взглядам, но я не могу понять, как я могу использовать теневой лифт. Я создал класс с именем ShadowedView как документация с той же реализацией, то в xib я устанавливаю подкласс UIView в ShadowedView, Но сборка не удалась с этой ошибкой Use of unresolved identifier 'MDCShadowLayer', Документация мне не понятна. Может кто-нибудь, пожалуйста, объясните мне, как я могу использовать MaterialComponents?

1 ответ

Хорошо, вот что я смог выяснить.

Была зависимость MDCShadowLayerкоторый не был включен с помощью 'MaterialComponents/ShadowElevations'

Я изменил свой Podfile на следующее:

# Uncomment the next line to define a global platform for your project
platform :ios, '9.0'

target 'TestMaterialShadow' do
  # Comment the next line if you're not using Swift and don't want to use dynamic frameworks
  use_frameworks!

  # Pods for TestMaterialShadow
  pod 'MaterialComponents'
end 

затем pod install

Я использую Swift 3, так что для меня сработало так:

import UIKit

import MaterialComponents

class ShadowView: UIView {

    override class var layerClass: AnyClass {
        return MDCShadowLayer.self
    }

    var shadowLayer: MDCShadowLayer {
        return self.layer as! MDCShadowLayer
    }

    func setDefaultElevation() {
        self.shadowLayer.elevation = ShadowElevation.cardResting
    }

}

Обратите внимание на изменение в setDefaultElevation()Там, кажется, есть другие настройки, такие как ShadowElevation.carPickedUp и т.д., которые вы можете использовать автозаполнение, чтобы изучить себя.

Затем я создал UIView с помощью конструктора интерфейса, установив его класс на то, что я назвал ShadowViewи создал выход к нему, названный здесь как myView в ViewController.

Затем в ViewDidLoad:

myView.setDefaultElevation()

Как совет, вы, вероятно, избавите себя от многих проблем, если просто создадите свои собственные тени для своих видов. Использование этой библиотеки материалов дает много зависимостей за очень мало взамен

Вам не нужно импортировать весь MaterialComponnent,
Просто добавьте стручок MaterialComponents/ShadowLayer к твоим стручкам.

Другие вопросы по тегам