Skip to content

Commit

Permalink
Merge pull request #20 from surfstudio/fix/snapshot
Browse files Browse the repository at this point in the history
Fix - Snapshot issues
  • Loading branch information
chausovSurfStudio authored Feb 10, 2025
2 parents 364aa0d + 5f3a5de commit c9be4b6
Show file tree
Hide file tree
Showing 36 changed files with 43 additions and 619 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/deploy_docc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,10 +43,10 @@ jobs:
--output-path docs;
- name: Upload artifact
uses: actions/upload-pages-artifact@v1
uses: actions/upload-pages-artifact@v3
with:
path: 'docs'

- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v1
uses: actions/deploy-pages@v3
2 changes: 1 addition & 1 deletion .github/workflows/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ jobs:

steps:
- uses: actions/checkout@v2
- name: CocoaPods
- name: Init
run: |
gem install xcpretty -N
make init
Expand Down
1 change: 1 addition & 0 deletions .ruby-version
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
3.3.6
2 changes: 1 addition & 1 deletion Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ git_source(:github) do |repo_name|
end if Gem::Version.new(Bundler::VERSION) < Gem::Version.new('2')

gem "fastlane", "2.226.0"
gem 'cocoapods'
gem 'cocoapods', "1.16.2"
gem 'xcpretty', "0.4.0"
gem 'generamba', github: 'surfstudio/Generamba', tag: '1.7.1'

Expand Down
1 change: 0 additions & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ init:
-bundle install
-bundle exec pod repo update
-bundle exec pod install
-bundle exec generamba template install

build:
bundle exec fastlane build clean:true
Expand Down
6 changes: 3 additions & 3 deletions Rambafile
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,6 @@ podfile_path: Podfile

### Templates
templates:
- {name: surf_mvp_coordinatable_module, local: 'generamba/templates/surf_mvp_coordinatable_module'}
- {name: surf_mvp_coordinatable_alert, local: 'generamba/templates/surf_mvp_coordinatable_alert'}
- {name: surf_mvp_coordinator, local: 'generamba/templates/surf_mvp_coordinator'}
- {name: surf_mvp_coordinatable_module}
- {name: surf_mvp_coordinatable_alert}
- {name: surf_mvp_coordinator}
2 changes: 2 additions & 0 deletions SurfPlaybook/Playbook/Core/Containers/SUIViewContainer.swift
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,8 @@ extension SUIViewContainer: PlaybookContainer {
return self
}

contentView.backgroundColor = .clear

translatesAutoresizingMaskIntoConstraints = false
contentView.translatesAutoresizingMaskIntoConstraints = false

Expand Down
22 changes: 17 additions & 5 deletions SurfPlaybook/Playbook/Core/PlaybookPage.swift
Original file line number Diff line number Diff line change
Expand Up @@ -40,15 +40,23 @@ public struct PlaybookPage {
return config(nil).makeSnapshot()
}

/// Предпочтительная конфигурация.
/// При наличии вариантов конфигурации предпочтение отдаётся первой конфигурации.
/// Это сделано для того, чтобы в частном случае можно было в `config` записать
/// эксклюзивную конфигурацию для snapshot, с дополнительным фоном или отключенными анимациями.
var preferredConfig: PlaybookContainerProvider {
presets.first?.config ?? config
}

// MARK: - Public Properties

/// Массив, содержащий различные варианты конфигурации UI-компонента.
///
/// Представляет собой массив элементов, где каждый состоит из двух компонентов
/// - preset - абстрактный объект, выполняющий протокол `StringRepresentable`,
/// - **preset** - абстрактный объект, выполняющий протокол `StringRepresentable`,
/// где протокол содержит лишь одно поле `title`. Так что, фактически,
/// это просто `название состояния`
/// - config - замыкание, при вызове которого строится нужное состояние UI-компонента
/// - **config** - замыкание, при вызове которого строится нужное состояние UI-компонента
/// и возвращается UIView, его содержащее
public var presets: [(preset: StringRepresentable, config: PlaybookContainerProvider)] = []

Expand All @@ -57,11 +65,15 @@ public struct PlaybookPage {
/// Конструктор для создание страницы плейбука
///
/// - Parameters:
/// - name: название UI-компонента, будет отображено в приложении
/// - description: опциональное описание компонента
/// - name: название UI-компонента, будет отображено в приложении
/// - description: опциональное описание компонента
/// (пока что не используется и нигде не отображается)
/// - config: замыкание, при вызове которого должно строится нужное состояние UI-компонента
/// - config: замыкание, при вызове которого должно строится нужное состояние UI-компонента
/// и возвращаться UIView, его содержащее
/// - Warning: Снимок для превью компонента делается с `config`, а не с `presets`.
/// В случае, если UI-компонент **анимирован** и анимации **искажают** его preview или оставляют его **пустым**,
/// можно передать в `config` уникальную конфигурацию с отключенной анимацией,
/// а конфигурацию для показа установить в `presets`.
public init(name: String,
description: String?,
config: @escaping PlaybookContainerProvider) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ private extension PageViewController {

func configureAppearance(with page: PlaybookPage) {
configureNavigationBar(with: page)
configureContent(contentView: page.config(self).loadView())
configureContent(contentView: page.preferredConfig(self).loadView())
configureGesture()
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,21 @@ extension TabBarViewController: UITabBarControllerDelegate {
isStackEmpty = navigationController?.visibleViewController == navigationController?.viewControllers[0]
}
isSelectableStackEmpty = isStackEmpty

// Отключаем новомодную [анимацию](https://medium.com/@adityaramadhan.biz/new-tabbar-transition-animation-in-ios-18-and-xcode-16-ea4b2c4d84d4)
guard let fromView = selectedViewController?.view,
let toView = viewController.view else {
return false
}

if fromView != toView {
UIView.transition(from: fromView,
to: toView,
duration: 0,
options: [.transitionCrossDissolve],
completion: nil)
}

return true
}

Expand Down

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

This file was deleted.

Loading

0 comments on commit c9be4b6

Please sign in to comment.