From abe25f2156855b4bdb7b31fed220548c9d0f9bb5 Mon Sep 17 00:00:00 2001 From: Stefan Painhapp <4242986+painhapp@users.noreply.github.com> Date: Fri, 18 Nov 2022 01:45:27 +0900 Subject: [PATCH 1/8] Refactor pin to (parent) layout constraints as extension of UIView --- .../Scene/Compose/ComposeViewController.swift | 14 +------ .../DiscoveryCommunityViewController.swift | 7 +--- .../DiscoveryForYouViewController.swift | 7 +--- .../DiscoveryHashtagsViewController.swift | 7 +--- .../News/DiscoveryNewsViewController.swift | 7 +--- .../Posts/DiscoveryPostsViewController.swift | 7 +--- .../HashtagTimelineViewController.swift | 7 +--- .../HomeTimelineViewController.swift | 7 +--- .../HomeTimelineNavigationBarTitleView.swift | 7 +--- .../MediaPreviewViewController.swift | 7 +--- .../MediaPreviewVideoViewController.swift | 14 +------ .../NotificationTimelineViewController.swift | 7 +--- .../View/PickServerCategoryView.swift | 7 +--- ...ckServerServerSectionTableHeaderView.swift | 5 +-- .../MastodonRegisterViewController.swift | 7 +--- .../MastodonResendEmailViewController.swift | 7 +--- .../MastodonServerRulesViewController.swift | 7 +--- .../Share/NavigationActionView.swift | 14 +------ .../OnboardingNavigationController.swift | 7 +--- .../View/WelcomeIllustrationView.swift | 7 +--- .../Welcome/WelcomeViewController.swift | 14 +------ .../About/ProfileAboutViewController.swift | 7 +--- .../Bookmark/BookmarkViewController.swift | 7 +--- .../FamiliarFollowersViewController.swift | 7 +--- .../Favorite/FavoriteViewController.swift | 7 +--- .../Follower/FollowerListViewController.swift | 7 +--- .../FollowingListViewController.swift | 7 +--- .../Header/View/ProfileHeaderView.swift | 40 +++---------------- .../Paging/ProfilePagingViewController.swift | 7 +--- .../Scene/Profile/ProfileViewController.swift | 7 +--- .../Timeline/UserTimelineViewController.swift | 7 +--- .../FavoritedByViewController.swift | 7 +--- .../RebloggedByViewController.swift | 7 +--- .../Report/Report/ReportViewController.swift | 7 +--- .../ReportReasonViewController.swift | 7 +--- .../ReportResultViewController.swift | 7 +--- .../ReportServerRulesViewController.swift | 7 +--- .../ReportStatusViewController.swift | 7 +--- .../ReportSupplementaryViewController.swift | 7 +--- .../Cell/ReportCommentTableViewCell.swift | 5 +-- .../ReportResultActionTableViewCell.swift | 7 +--- .../Root/MainTab/MainTabBarController.swift | 7 +--- .../Root/Sidebar/SidebarViewController.swift | 7 +--- .../Search/Cell/TrendCollectionViewCell.swift | 7 +--- .../Search/Search/SearchViewController.swift | 14 +------ .../SearchRecommendCollectionHeader.swift | 7 +--- .../SearchDetailViewController.swift | 14 +------ .../SearchHistoryViewController.swift | 7 +--- .../SearchResultViewController.swift | 7 +--- .../SettingsAppearanceTableViewCell.swift | 7 +--- .../Settings/SettingsViewController.swift | 7 +--- .../Scene/Settings/View/AppearanceView.swift | 12 +----- ...ontextMenuImagePreviewViewController.swift | 7 +--- .../Content/ContentWarningOverlayView.swift | 21 ++-------- ...ubleTitleLabelNavigationBarTitleView.swift | 7 +--- .../Share/Webview/WebViewController.swift | 7 +--- .../SuggestionAccountCollectionViewCell.swift | 7 +--- .../SuggestionAccountTableViewCell.swift | 7 +--- .../Scene/Thread/ThreadViewController.swift | 7 +--- .../Sources/MastodonExtension/UIView.swift | 17 ++++++++ .../AutoCompleteViewController.swift | 7 +--- .../View/AutoCompleteTopChevronView.swift | 7 +--- .../ComposeContentViewController.swift | 7 +--- .../CustomEmojiPickerInputView.swift | 7 +--- ...tomEmojiPickerItemCollectionViewCell.swift | 7 +--- .../MastodonUI/SwiftUI/AnimatedImage.swift | 7 +--- .../MastodonUI/View/Button/AvatarButton.swift | 7 +--- .../Container/MediaGridContainerView.swift | 14 +------ .../FamiliarFollowersDashboardView.swift | 7 +--- .../MastodonUI/View/Content/MediaView.swift | 35 +++------------- .../MastodonUI/View/Content/NewsView.swift | 7 +--- .../View/Content/NotificationView.swift | 28 ++----------- .../View/Content/PollOptionView.swift | 14 +------ .../View/Content/ProfileCardView.swift | 12 +----- .../MastodonUI/View/Content/StatusView.swift | 21 ++-------- .../MastodonUI/View/Content/UserView.swift | 7 +--- .../View/Control/SpoilerOverlayView.swift | 7 +--- .../PollOptionTableViewCell.swift | 7 +--- .../ProfileCardTableViewCell.swift | 7 +--- .../TimelineLoaderTableViewCell.swift | 7 +--- .../Scene/ShareViewController.swift | 7 +--- 81 files changed, 123 insertions(+), 626 deletions(-) diff --git a/Mastodon/Scene/Compose/ComposeViewController.swift b/Mastodon/Scene/Compose/ComposeViewController.swift index fd5ed5817..c0b83e6c8 100644 --- a/Mastodon/Scene/Compose/ComposeViewController.swift +++ b/Mastodon/Scene/Compose/ComposeViewController.swift @@ -58,12 +58,7 @@ final class ComposeViewController: UIViewController, NeedsDependency { let shadowBackgroundContainer = ShadowBackgroundContainer() publishButton.translatesAutoresizingMaskIntoConstraints = false shadowBackgroundContainer.addSubview(publishButton) - NSLayoutConstraint.activate([ - publishButton.topAnchor.constraint(equalTo: shadowBackgroundContainer.topAnchor), - publishButton.leadingAnchor.constraint(equalTo: shadowBackgroundContainer.leadingAnchor), - publishButton.trailingAnchor.constraint(equalTo: shadowBackgroundContainer.trailingAnchor), - publishButton.bottomAnchor.constraint(equalTo: shadowBackgroundContainer.bottomAnchor), - ]) + publishButton.pinToParent() let barButtonItem = UIBarButtonItem(customView: shadowBackgroundContainer) return barButtonItem }() @@ -105,12 +100,7 @@ extension ComposeViewController { addChild(composeContentViewController) composeContentViewController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(composeContentViewController.view) - NSLayoutConstraint.activate([ - composeContentViewController.view.topAnchor.constraint(equalTo: view.topAnchor), - composeContentViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - composeContentViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - composeContentViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + composeContentViewController.view.pinToParent() composeContentViewController.didMove(toParent: self) // bind title diff --git a/Mastodon/Scene/Discovery/Community/DiscoveryCommunityViewController.swift b/Mastodon/Scene/Discovery/Community/DiscoveryCommunityViewController.swift index 31635dc85..870bfc72a 100644 --- a/Mastodon/Scene/Discovery/Community/DiscoveryCommunityViewController.swift +++ b/Mastodon/Scene/Discovery/Community/DiscoveryCommunityViewController.swift @@ -57,12 +57,7 @@ extension DiscoveryCommunityViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.refreshControl = refreshControl refreshControl.addTarget(self, action: #selector(DiscoveryCommunityViewController.refreshControlValueChanged(_:)), for: .valueChanged) diff --git a/Mastodon/Scene/Discovery/ForYou/DiscoveryForYouViewController.swift b/Mastodon/Scene/Discovery/ForYou/DiscoveryForYouViewController.swift index 52e5e1856..dec1d9c72 100644 --- a/Mastodon/Scene/Discovery/ForYou/DiscoveryForYouViewController.swift +++ b/Mastodon/Scene/Discovery/ForYou/DiscoveryForYouViewController.swift @@ -56,12 +56,7 @@ extension DiscoveryForYouViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Discovery/Hashtags/DiscoveryHashtagsViewController.swift b/Mastodon/Scene/Discovery/Hashtags/DiscoveryHashtagsViewController.swift index 1c855c254..2d8212ca9 100644 --- a/Mastodon/Scene/Discovery/Hashtags/DiscoveryHashtagsViewController.swift +++ b/Mastodon/Scene/Discovery/Hashtags/DiscoveryHashtagsViewController.swift @@ -56,12 +56,7 @@ extension DiscoveryHashtagsViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.refreshControl = refreshControl refreshControl.addTarget(self, action: #selector(DiscoveryHashtagsViewController.refreshControlValueChanged(_:)), for: .valueChanged) diff --git a/Mastodon/Scene/Discovery/News/DiscoveryNewsViewController.swift b/Mastodon/Scene/Discovery/News/DiscoveryNewsViewController.swift index d1634db82..7b9579a4b 100644 --- a/Mastodon/Scene/Discovery/News/DiscoveryNewsViewController.swift +++ b/Mastodon/Scene/Discovery/News/DiscoveryNewsViewController.swift @@ -56,12 +56,7 @@ extension DiscoveryNewsViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Discovery/Posts/DiscoveryPostsViewController.swift b/Mastodon/Scene/Discovery/Posts/DiscoveryPostsViewController.swift index 893f564a3..9d772a27e 100644 --- a/Mastodon/Scene/Discovery/Posts/DiscoveryPostsViewController.swift +++ b/Mastodon/Scene/Discovery/Posts/DiscoveryPostsViewController.swift @@ -58,12 +58,7 @@ extension DiscoveryPostsViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() discoveryIntroBannerView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(discoveryIntroBannerView) diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift index aad97283c..4a0be3816 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewController.swift @@ -80,12 +80,7 @@ extension HashtagTimelineViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index e83101796..831fc4ce0 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -158,12 +158,7 @@ extension HomeTimelineViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() // // layout publish progress publishProgressView.translatesAutoresizingMaskIntoConstraints = false diff --git a/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift b/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift index 400b4ee98..38b80fe28 100644 --- a/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift +++ b/Mastodon/Scene/HomeTimeline/View/HomeTimelineNavigationBarTitleView.swift @@ -47,12 +47,7 @@ extension HomeTimelineNavigationBarTitleView { private func _init() { containerView.translatesAutoresizingMaskIntoConstraints = false addSubview(containerView) - NSLayoutConstraint.activate([ - containerView.topAnchor.constraint(equalTo: topAnchor), - containerView.leadingAnchor.constraint(equalTo: leadingAnchor), - containerView.trailingAnchor.constraint(equalTo: trailingAnchor), - containerView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + containerView.pinToParent() containerView.addArrangedSubview(logoButton) button.translatesAutoresizingMaskIntoConstraints = false diff --git a/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift b/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift index c6552bcba..df3fed7d1 100644 --- a/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift +++ b/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift @@ -65,12 +65,7 @@ extension MediaPreviewViewController { pagingViewController.view.translatesAutoresizingMaskIntoConstraints = false addChild(pagingViewController) visualEffectView.contentView.addSubview(pagingViewController.view) - NSLayoutConstraint.activate([ - visualEffectView.topAnchor.constraint(equalTo: pagingViewController.view.topAnchor), - visualEffectView.bottomAnchor.constraint(equalTo: pagingViewController.view.bottomAnchor), - visualEffectView.leadingAnchor.constraint(equalTo: pagingViewController.view.leadingAnchor), - visualEffectView.trailingAnchor.constraint(equalTo: pagingViewController.view.trailingAnchor), - ]) + visualEffectView.pinTo(to: pagingViewController.view) pagingViewController.didMove(toParent: self) closeButtonBackground.translatesAutoresizingMaskIntoConstraints = false diff --git a/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift b/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift index 7bdbbfed2..5c18c1e5e 100644 --- a/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift +++ b/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift @@ -39,23 +39,13 @@ extension MediaPreviewVideoViewController { addChild(playerViewController) playerViewController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(playerViewController.view) - NSLayoutConstraint.activate([ - playerViewController.view.centerXAnchor.constraint(equalTo: view.centerXAnchor), - playerViewController.view.centerYAnchor.constraint(equalTo: view.centerYAnchor), - playerViewController.view.widthAnchor.constraint(equalTo: view.widthAnchor), - playerViewController.view.heightAnchor.constraint(equalTo: view.heightAnchor), - ]) + playerViewController.pinToParent() playerViewController.didMove(toParent: self) if let contentOverlayView = playerViewController.contentOverlayView { previewImageView.translatesAutoresizingMaskIntoConstraints = false contentOverlayView.addSubview(previewImageView) - NSLayoutConstraint.activate([ - previewImageView.topAnchor.constraint(equalTo: contentOverlayView.topAnchor), - previewImageView.leadingAnchor.constraint(equalTo: contentOverlayView.leadingAnchor), - previewImageView.trailingAnchor.constraint(equalTo: contentOverlayView.trailingAnchor), - previewImageView.bottomAnchor.constraint(equalTo: contentOverlayView.bottomAnchor), - ]) + previewImageView.pinToParent() } playerViewController.delegate = self diff --git a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift index d088bb783..9b7416afc 100644 --- a/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift +++ b/Mastodon/Scene/Notification/NotificationTimeline/NotificationTimelineViewController.swift @@ -55,12 +55,7 @@ extension NotificationTimelineViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift b/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift index bfa3343bd..aba5a87dc 100644 --- a/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift +++ b/Mastodon/Scene/Onboarding/PickServer/View/PickServerCategoryView.swift @@ -48,12 +48,7 @@ extension PickServerCategoryView { container.translatesAutoresizingMaskIntoConstraints = false addSubview(container) - NSLayoutConstraint.activate([ - container.topAnchor.constraint(equalTo: topAnchor), - container.leadingAnchor.constraint(equalTo: leadingAnchor), - container.trailingAnchor.constraint(equalTo: trailingAnchor), - container.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + container.pinToParent() container.addArrangedSubview(titleLabel) highlightedIndicatorView.translatesAutoresizingMaskIntoConstraints = false diff --git a/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift b/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift index ae8c16bb8..f4b05cab3 100644 --- a/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift +++ b/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift @@ -83,11 +83,8 @@ final class PickServerServerSectionTableHeaderView: UIView { let paddingView = UIView() paddingView.translatesAutoresizingMaskIntoConstraints = false containerView.addSubview(paddingView) + paddingView.pinToParent() NSLayoutConstraint.activate([ - paddingView.topAnchor.constraint(equalTo: containerView.topAnchor), - paddingView.leadingAnchor.constraint(equalTo: imageView.trailingAnchor), - paddingView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), - paddingView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), paddingView.widthAnchor.constraint(equalToConstant: 4).priority(.defaultHigh), ]) return containerView diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift index dc5152f98..f239e59b7 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController.swift @@ -85,12 +85,7 @@ extension MastodonRegisterViewController { addChild(hostingViewController) hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(hostingViewController.view) - NSLayoutConstraint.activate([ - hostingViewController.view.topAnchor.constraint(equalTo: view.topAnchor), - hostingViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - hostingViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - hostingViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + hostingViewController.view.pinToParent() navigationActionView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(navigationActionView) diff --git a/Mastodon/Scene/Onboarding/ResendEmail/MastodonResendEmailViewController.swift b/Mastodon/Scene/Onboarding/ResendEmail/MastodonResendEmailViewController.swift index 178d489be..d6870785c 100644 --- a/Mastodon/Scene/Onboarding/ResendEmail/MastodonResendEmailViewController.swift +++ b/Mastodon/Scene/Onboarding/ResendEmail/MastodonResendEmailViewController.swift @@ -49,12 +49,7 @@ extension MastodonResendEmailViewController { webView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(webView) - NSLayoutConstraint.activate([ - webView.topAnchor.constraint(equalTo: view.topAnchor), - webView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - webView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - webView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + webView.pinToParent() let request = URLRequest(url: viewModel.resendEmailURL) webView.navigationDelegate = self.viewModel.navigationDelegate diff --git a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift index e22ea5748..ea0b58e28 100644 --- a/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift +++ b/Mastodon/Scene/Onboarding/ServerRules/MastodonServerRulesViewController.swift @@ -69,12 +69,7 @@ extension MastodonServerRulesViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() navigationActionView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(navigationActionView) diff --git a/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift b/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift index c3236bdb4..54b473df8 100644 --- a/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift +++ b/Mastodon/Scene/Onboarding/Share/NavigationActionView.swift @@ -84,21 +84,11 @@ extension NavigationActionView { backButton.translatesAutoresizingMaskIntoConstraints = false backButtonShadowContainer.addSubview(backButton) - NSLayoutConstraint.activate([ - backButton.topAnchor.constraint(equalTo: backButtonShadowContainer.topAnchor), - backButton.leadingAnchor.constraint(equalTo: backButtonShadowContainer.leadingAnchor), - backButton.trailingAnchor.constraint(equalTo: backButtonShadowContainer.trailingAnchor), - backButton.bottomAnchor.constraint(equalTo: backButtonShadowContainer.bottomAnchor), - ]) + backButton.pinToParent() nextButton.translatesAutoresizingMaskIntoConstraints = false nextButtonShadowContainer.addSubview(nextButton) - NSLayoutConstraint.activate([ - nextButton.topAnchor.constraint(equalTo: nextButtonShadowContainer.topAnchor), - nextButton.leadingAnchor.constraint(equalTo: nextButtonShadowContainer.leadingAnchor), - nextButton.trailingAnchor.constraint(equalTo: nextButtonShadowContainer.trailingAnchor), - nextButton.bottomAnchor.constraint(equalTo: nextButtonShadowContainer.bottomAnchor), - ]) + nextButton.pinToParent() } } diff --git a/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift b/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift index 537102dc9..ac2e5b171 100644 --- a/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift +++ b/Mastodon/Scene/Onboarding/Share/OnboardingNavigationController.swift @@ -20,12 +20,7 @@ extension OnboardingNavigationController { gradientBorderView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(gradientBorderView) - NSLayoutConstraint.activate([ - gradientBorderView.topAnchor.constraint(equalTo: view.topAnchor), - gradientBorderView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - gradientBorderView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - gradientBorderView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + gradientBorderView.pinToParent() updateBorderViewDisplay() } diff --git a/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift b/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift index 0530539a2..1fca1afef 100644 --- a/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift +++ b/Mastodon/Scene/Onboarding/Welcome/View/WelcomeIllustrationView.swift @@ -96,12 +96,7 @@ extension WelcomeIllustrationView { ].forEach { imageView in imageView.translatesAutoresizingMaskIntoConstraints = false addSubview(imageView) - NSLayoutConstraint.activate([ - imageView.topAnchor.constraint(equalTo: cloudBaseImageView.topAnchor), - imageView.leadingAnchor.constraint(equalTo: cloudBaseImageView.leadingAnchor), - imageView.trailingAnchor.constraint(equalTo: cloudBaseImageView.trailingAnchor), - imageView.bottomAnchor.constraint(equalTo: cloudBaseImageView.bottomAnchor), - ]) + imageView.pinTo(to: cloudBaseImageView) } aspectLayoutConstraint = cloudBaseImageView.widthAnchor.constraint(equalTo: cloudBaseImageView.heightAnchor, multiplier: layout.artworkImageSize.width / layout.artworkImageSize.height) diff --git a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift index 32696d197..86a4af800 100644 --- a/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift +++ b/Mastodon/Scene/Onboarding/Welcome/WelcomeViewController.swift @@ -124,22 +124,12 @@ extension WelcomeViewController { signUpButtonShadowView.translatesAutoresizingMaskIntoConstraints = false buttonContainer.addSubview(signUpButtonShadowView) buttonContainer.sendSubviewToBack(signUpButtonShadowView) - NSLayoutConstraint.activate([ - signUpButtonShadowView.topAnchor.constraint(equalTo: signUpButton.topAnchor), - signUpButtonShadowView.leadingAnchor.constraint(equalTo: signUpButton.leadingAnchor), - signUpButtonShadowView.trailingAnchor.constraint(equalTo: signUpButton.trailingAnchor), - signUpButtonShadowView.bottomAnchor.constraint(equalTo: signUpButton.bottomAnchor), - ]) + signUpButtonShadowView.pinTo(to: signUpButton) signInButtonShadowView.translatesAutoresizingMaskIntoConstraints = false buttonContainer.addSubview(signInButtonShadowView) buttonContainer.sendSubviewToBack(signInButtonShadowView) - NSLayoutConstraint.activate([ - signInButtonShadowView.topAnchor.constraint(equalTo: signInButton.topAnchor), - signInButtonShadowView.leadingAnchor.constraint(equalTo: signInButton.leadingAnchor), - signInButtonShadowView.trailingAnchor.constraint(equalTo: signInButton.trailingAnchor), - signInButtonShadowView.bottomAnchor.constraint(equalTo: signInButton.bottomAnchor), - ]) + signInButtonShadowView.pinTo(to: signInButton) signUpButton.addTarget(self, action: #selector(signUpButtonDidClicked(_:)), for: .touchUpInside) signInButton.addTarget(self, action: #selector(signInButtonDidClicked(_:)), for: .touchUpInside) diff --git a/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift b/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift index eb1e6b39c..fe92d2ac4 100644 --- a/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift +++ b/Mastodon/Scene/Profile/About/ProfileAboutViewController.swift @@ -60,12 +60,7 @@ extension ProfileAboutViewController { collectionView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(collectionView) - NSLayoutConstraint.activate([ - collectionView.topAnchor.constraint(equalTo: view.topAnchor), - collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + collectionView.pinToParent() collectionView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Profile/Bookmark/BookmarkViewController.swift b/Mastodon/Scene/Profile/Bookmark/BookmarkViewController.swift index 5edec2618..458c47335 100644 --- a/Mastodon/Scene/Profile/Bookmark/BookmarkViewController.swift +++ b/Mastodon/Scene/Profile/Bookmark/BookmarkViewController.swift @@ -64,12 +64,7 @@ extension BookmarkViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Profile/FamiliarFollowers/FamiliarFollowersViewController.swift b/Mastodon/Scene/Profile/FamiliarFollowers/FamiliarFollowersViewController.swift index b6d6f8313..3595303d9 100644 --- a/Mastodon/Scene/Profile/FamiliarFollowers/FamiliarFollowersViewController.swift +++ b/Mastodon/Scene/Profile/FamiliarFollowers/FamiliarFollowersViewController.swift @@ -53,12 +53,7 @@ extension FamiliarFollowersViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift b/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift index c15adcf83..19f25f3ad 100644 --- a/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift +++ b/Mastodon/Scene/Profile/Favorite/FavoriteViewController.swift @@ -67,12 +67,7 @@ extension FavoriteViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Profile/Follower/FollowerListViewController.swift b/Mastodon/Scene/Profile/Follower/FollowerListViewController.swift index 190fa27e5..c111d13d0 100644 --- a/Mastodon/Scene/Profile/Follower/FollowerListViewController.swift +++ b/Mastodon/Scene/Profile/Follower/FollowerListViewController.swift @@ -58,12 +58,7 @@ extension FollowerListViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Profile/Following/FollowingListViewController.swift b/Mastodon/Scene/Profile/Following/FollowingListViewController.swift index e16b600c2..3fa65918a 100644 --- a/Mastodon/Scene/Profile/Following/FollowingListViewController.swift +++ b/Mastodon/Scene/Profile/Following/FollowingListViewController.swift @@ -58,12 +58,7 @@ extension FollowingListViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift index a2194758b..49963f7fb 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift @@ -265,12 +265,7 @@ extension ProfileHeaderView { bannerImageViewOverlayVisualEffectView.translatesAutoresizingMaskIntoConstraints = false bannerImageView.addSubview(bannerImageViewOverlayVisualEffectView) - NSLayoutConstraint.activate([ - bannerImageViewOverlayVisualEffectView.topAnchor.constraint(equalTo: bannerImageView.topAnchor), - bannerImageViewOverlayVisualEffectView.leadingAnchor.constraint(equalTo: bannerImageView.leadingAnchor), - bannerImageViewOverlayVisualEffectView.trailingAnchor.constraint(equalTo: bannerImageView.trailingAnchor), - bannerImageViewOverlayVisualEffectView.bottomAnchor.constraint(equalTo: bannerImageView.bottomAnchor), - ]) + bannerImageViewOverlayVisualEffectView.pinToParent() // follows you followsYouBlurEffectView.translatesAutoresizingMaskIntoConstraints = false @@ -286,12 +281,7 @@ extension ProfileHeaderView { followsYouVibrantEffectView.translatesAutoresizingMaskIntoConstraints = false followsYouBlurEffectView.contentView.addSubview(followsYouVibrantEffectView) - NSLayoutConstraint.activate([ - followsYouVibrantEffectView.topAnchor.constraint(equalTo: followsYouBlurEffectView.topAnchor), - followsYouVibrantEffectView.leadingAnchor.constraint(equalTo: followsYouBlurEffectView.leadingAnchor), - followsYouVibrantEffectView.trailingAnchor.constraint(equalTo: followsYouBlurEffectView.trailingAnchor), - followsYouVibrantEffectView.bottomAnchor.constraint(equalTo: followsYouBlurEffectView.bottomAnchor), - ]) + followsYouVibrantEffectView.pinToParent() followsYouLabel.translatesAutoresizingMaskIntoConstraints = false followsYouVibrantEffectView.contentView.addSubview(followsYouLabel) @@ -327,30 +317,15 @@ extension ProfileHeaderView { avatarImageViewOverlayVisualEffectView.translatesAutoresizingMaskIntoConstraints = false avatarImageViewBackgroundView.addSubview(avatarImageViewOverlayVisualEffectView) - NSLayoutConstraint.activate([ - avatarImageViewOverlayVisualEffectView.topAnchor.constraint(equalTo: avatarImageViewBackgroundView.topAnchor), - avatarImageViewOverlayVisualEffectView.leadingAnchor.constraint(equalTo: avatarImageViewBackgroundView.leadingAnchor), - avatarImageViewOverlayVisualEffectView.trailingAnchor.constraint(equalTo: avatarImageViewBackgroundView.trailingAnchor), - avatarImageViewOverlayVisualEffectView.bottomAnchor.constraint(equalTo: avatarImageViewBackgroundView.bottomAnchor), - ]) + avatarImageViewOverlayVisualEffectView.pinToParent() editAvatarBackgroundView.translatesAutoresizingMaskIntoConstraints = false avatarButton.addSubview(editAvatarBackgroundView) - NSLayoutConstraint.activate([ - editAvatarBackgroundView.topAnchor.constraint(equalTo: avatarButton.topAnchor), - editAvatarBackgroundView.leadingAnchor.constraint(equalTo: avatarButton.leadingAnchor), - editAvatarBackgroundView.trailingAnchor.constraint(equalTo: avatarButton.trailingAnchor), - editAvatarBackgroundView.bottomAnchor.constraint(equalTo: avatarButton.bottomAnchor), - ]) + editAvatarBackgroundView.pinToParent() editAvatarButtonOverlayIndicatorView.translatesAutoresizingMaskIntoConstraints = false editAvatarBackgroundView.addSubview(editAvatarButtonOverlayIndicatorView) - NSLayoutConstraint.activate([ - editAvatarButtonOverlayIndicatorView.topAnchor.constraint(equalTo: editAvatarBackgroundView.topAnchor), - editAvatarButtonOverlayIndicatorView.leadingAnchor.constraint(equalTo: editAvatarBackgroundView.leadingAnchor), - editAvatarButtonOverlayIndicatorView.trailingAnchor.constraint(equalTo: editAvatarBackgroundView.trailingAnchor), - editAvatarButtonOverlayIndicatorView.bottomAnchor.constraint(equalTo: editAvatarBackgroundView.bottomAnchor), - ]) + editAvatarButtonOverlayIndicatorView.pinToParent() editAvatarBackgroundView.isUserInteractionEnabled = true avatarButton.isUserInteractionEnabled = true @@ -436,11 +411,8 @@ extension ProfileHeaderView { relationshipActionButton.translatesAutoresizingMaskIntoConstraints = false relationshipActionButtonShadowContainer.addSubview(relationshipActionButton) + relationshipActionButton.pinToParent() NSLayoutConstraint.activate([ - relationshipActionButton.topAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.topAnchor), - relationshipActionButton.leadingAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.leadingAnchor), - relationshipActionButton.trailingAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.trailingAnchor), - relationshipActionButton.bottomAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.bottomAnchor), relationshipActionButton.widthAnchor.constraint(greaterThanOrEqualToConstant: ProfileHeaderView.friendshipActionButtonSize.width).priority(.required - 1), relationshipActionButton.heightAnchor.constraint(equalToConstant: ProfileHeaderView.friendshipActionButtonSize.height).priority(.defaultHigh), ]) diff --git a/Mastodon/Scene/Profile/Paging/ProfilePagingViewController.swift b/Mastodon/Scene/Profile/Paging/ProfilePagingViewController.swift index db92617b7..27c539d18 100644 --- a/Mastodon/Scene/Profile/Paging/ProfilePagingViewController.swift +++ b/Mastodon/Scene/Profile/Paging/ProfilePagingViewController.swift @@ -99,12 +99,7 @@ extension ProfilePagingViewController { if let buttonBarView = self.buttonBarView { buttonBarShadowView.translatesAutoresizingMaskIntoConstraints = false view.insertSubview(buttonBarShadowView, belowSubview: buttonBarView) - NSLayoutConstraint.activate([ - buttonBarShadowView.topAnchor.constraint(equalTo: buttonBarView.topAnchor), - buttonBarShadowView.leadingAnchor.constraint(equalTo: buttonBarView.leadingAnchor), - buttonBarShadowView.trailingAnchor.constraint(equalTo: buttonBarView.trailingAnchor), - buttonBarShadowView.bottomAnchor.constraint(equalTo: buttonBarView.bottomAnchor), - ]) + buttonBarShadowView.pinTo(to: buttonBarView) viewModel.$needsSetupBottomShadow .receive(on: DispatchQueue.main) diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index d9e56630f..f3893c105 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -259,12 +259,7 @@ extension ProfileViewController { tabBarPagerController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tabBarPagerController.view) tabBarPagerController.didMove(toParent: self) - NSLayoutConstraint.activate([ - tabBarPagerController.view.topAnchor.constraint(equalTo: view.topAnchor), - tabBarPagerController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tabBarPagerController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tabBarPagerController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tabBarPagerController.view.pinToParent() tabBarPagerController.delegate = self tabBarPagerController.dataSource = self diff --git a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift index 8a983da33..6cdd6a594 100644 --- a/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift +++ b/Mastodon/Scene/Profile/Timeline/UserTimelineViewController.swift @@ -60,12 +60,7 @@ extension UserTimelineViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Profile/UserLIst/FavoritedBy/FavoritedByViewController.swift b/Mastodon/Scene/Profile/UserLIst/FavoritedBy/FavoritedByViewController.swift index ebce374e7..07316cd3d 100644 --- a/Mastodon/Scene/Profile/UserLIst/FavoritedBy/FavoritedByViewController.swift +++ b/Mastodon/Scene/Profile/UserLIst/FavoritedBy/FavoritedByViewController.swift @@ -61,12 +61,7 @@ extension FavoritedByViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Profile/UserLIst/RebloggedBy/RebloggedByViewController.swift b/Mastodon/Scene/Profile/UserLIst/RebloggedBy/RebloggedByViewController.swift index 0688bcccb..a45c491fc 100644 --- a/Mastodon/Scene/Profile/UserLIst/RebloggedBy/RebloggedByViewController.swift +++ b/Mastodon/Scene/Profile/UserLIst/RebloggedBy/RebloggedByViewController.swift @@ -61,12 +61,7 @@ extension RebloggedByViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Report/Report/ReportViewController.swift b/Mastodon/Scene/Report/Report/ReportViewController.swift index f1418c5a1..120f96d09 100644 --- a/Mastodon/Scene/Report/Report/ReportViewController.swift +++ b/Mastodon/Scene/Report/Report/ReportViewController.swift @@ -61,12 +61,7 @@ extension ReportViewController { reportReasonViewController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(reportReasonViewController.view) reportReasonViewController.didMove(toParent: self) - NSLayoutConstraint.activate([ - reportReasonViewController.view.topAnchor.constraint(equalTo: view.topAnchor), - reportReasonViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - reportReasonViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - reportReasonViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + reportReasonViewController.view.pinToParent() } } diff --git a/Mastodon/Scene/Report/ReportReason/ReportReasonViewController.swift b/Mastodon/Scene/Report/ReportReason/ReportReasonViewController.swift index 2e8e53d18..517873abe 100644 --- a/Mastodon/Scene/Report/ReportReason/ReportReasonViewController.swift +++ b/Mastodon/Scene/Report/ReportReason/ReportReasonViewController.swift @@ -57,12 +57,7 @@ extension ReportReasonViewController { addChild(hostingViewController) hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(hostingViewController.view) - NSLayoutConstraint.activate([ - hostingViewController.view.topAnchor.constraint(equalTo: view.topAnchor), - hostingViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - hostingViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - hostingViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + hostingViewController.view.pinToParent() navigationActionView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(navigationActionView) diff --git a/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift b/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift index 10dcdf373..1d67ad6c3 100644 --- a/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift +++ b/Mastodon/Scene/Report/ReportResult/ReportResultViewController.swift @@ -60,12 +60,7 @@ extension ReportResultViewController { addChild(hostingViewController) hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(hostingViewController.view) - NSLayoutConstraint.activate([ - hostingViewController.view.topAnchor.constraint(equalTo: view.topAnchor), - hostingViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - hostingViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - hostingViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + hostingViewController.view.pinToParent() navigationActionView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(navigationActionView) diff --git a/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesViewController.swift b/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesViewController.swift index 3f1cdf331..00be4d800 100644 --- a/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesViewController.swift +++ b/Mastodon/Scene/Report/ReportServerRules/ReportServerRulesViewController.swift @@ -63,12 +63,7 @@ extension ReportServerRulesViewController { addChild(hostingViewController) hostingViewController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(hostingViewController.view) - NSLayoutConstraint.activate([ - hostingViewController.view.topAnchor.constraint(equalTo: view.topAnchor), - hostingViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - hostingViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - hostingViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + hostingViewController.view.pinToParent() navigationActionView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(navigationActionView) diff --git a/Mastodon/Scene/Report/ReportStatus/ReportStatusViewController.swift b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewController.swift index d45c196cd..6f934e13d 100644 --- a/Mastodon/Scene/Report/ReportStatus/ReportStatusViewController.swift +++ b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewController.swift @@ -80,12 +80,7 @@ extension ReportStatusViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift index e644c29ea..76f312273 100644 --- a/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift +++ b/Mastodon/Scene/Report/ReportSupplementary/ReportSupplementaryViewController.swift @@ -93,12 +93,7 @@ extension ReportSupplementaryViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift b/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift index d735a094c..ad6ce252a 100644 --- a/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift +++ b/Mastodon/Scene/Report/Share/Cell/ReportCommentTableViewCell.swift @@ -74,11 +74,8 @@ extension ReportCommentTableViewCell { commentTextView.translatesAutoresizingMaskIntoConstraints = false commentTextViewShadowBackgroundContainer.addSubview(commentTextView) + commentTextView.pinToParent() NSLayoutConstraint.activate([ - commentTextView.topAnchor.constraint(equalTo: commentTextViewShadowBackgroundContainer.topAnchor), - commentTextView.leadingAnchor.constraint(equalTo: commentTextViewShadowBackgroundContainer.leadingAnchor), - commentTextView.trailingAnchor.constraint(equalTo: commentTextViewShadowBackgroundContainer.trailingAnchor), - commentTextView.bottomAnchor.constraint(equalTo: commentTextViewShadowBackgroundContainer.bottomAnchor), commentTextView.heightAnchor.constraint(greaterThanOrEqualToConstant: 100).priority(.defaultHigh), ]) } diff --git a/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift b/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift index 9b605a0c7..1828035a6 100644 --- a/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift +++ b/Mastodon/Scene/Report/Share/Cell/ReportResultActionTableViewCell.swift @@ -103,12 +103,7 @@ extension ReportResultActionTableViewCell { reportBannerLabel.translatesAutoresizingMaskIntoConstraints = false reportBannerShadowContainer.addSubview(reportBannerLabel) - NSLayoutConstraint.activate([ - reportBannerLabel.topAnchor.constraint(equalTo: reportBannerShadowContainer.topAnchor), - reportBannerLabel.leadingAnchor.constraint(equalTo: reportBannerShadowContainer.leadingAnchor), - reportBannerLabel.trailingAnchor.constraint(equalTo: reportBannerShadowContainer.trailingAnchor), - reportBannerLabel.bottomAnchor.constraint(equalTo: reportBannerShadowContainer.bottomAnchor), - ]) + reportBannerLabel.pinToParent() } diff --git a/Mastodon/Scene/Root/MainTab/MainTabBarController.swift b/Mastodon/Scene/Root/MainTab/MainTabBarController.swift index 48d974358..67efeb33c 100644 --- a/Mastodon/Scene/Root/MainTab/MainTabBarController.swift +++ b/Mastodon/Scene/Root/MainTab/MainTabBarController.swift @@ -442,12 +442,7 @@ extension MainTabBarController { composeButton.translatesAutoresizingMaskIntoConstraints = false composeButttonShadowBackgroundContainer.addSubview(composeButton) - NSLayoutConstraint.activate([ - composeButton.topAnchor.constraint(equalTo: composeButttonShadowBackgroundContainer.topAnchor), - composeButton.leadingAnchor.constraint(equalTo: composeButttonShadowBackgroundContainer.leadingAnchor), - composeButton.trailingAnchor.constraint(equalTo: composeButttonShadowBackgroundContainer.trailingAnchor), - composeButton.bottomAnchor.constraint(equalTo: composeButttonShadowBackgroundContainer.bottomAnchor), - ]) + composeButton.pinToParent() composeButton.setContentHuggingPriority(.required - 1, for: .horizontal) composeButton.setContentHuggingPriority(.required - 1, for: .vertical) } diff --git a/Mastodon/Scene/Root/Sidebar/SidebarViewController.swift b/Mastodon/Scene/Root/Sidebar/SidebarViewController.swift index 70e1239b6..0133648a2 100644 --- a/Mastodon/Scene/Root/Sidebar/SidebarViewController.swift +++ b/Mastodon/Scene/Root/Sidebar/SidebarViewController.swift @@ -101,12 +101,7 @@ extension SidebarViewController { collectionView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(collectionView) - NSLayoutConstraint.activate([ - collectionView.topAnchor.constraint(equalTo: view.topAnchor), - collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + collectionView.pinToParent() secondaryCollectionView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(secondaryCollectionView) diff --git a/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift b/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift index 30f618625..4436459fb 100644 --- a/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift +++ b/Mastodon/Scene/Search/Search/Cell/TrendCollectionViewCell.swift @@ -48,12 +48,7 @@ extension TrendCollectionViewCell { trendView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(trendView) - NSLayoutConstraint.activate([ - trendView.topAnchor.constraint(equalTo: contentView.topAnchor), - trendView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - trendView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - trendView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - ]) + trendView.pinToParent() } override func updateConfiguration(using state: UICellConfigurationState) { diff --git a/Mastodon/Scene/Search/Search/SearchViewController.swift b/Mastodon/Scene/Search/Search/SearchViewController.swift index 581fa08b3..a8423aaf9 100644 --- a/Mastodon/Scene/Search/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/Search/SearchViewController.swift @@ -105,12 +105,7 @@ extension SearchViewController { addChild(discoveryViewController) discoveryViewController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(discoveryViewController.view) - NSLayoutConstraint.activate([ - discoveryViewController.view.topAnchor.constraint(equalTo: view.topAnchor), - discoveryViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - discoveryViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - discoveryViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + discoveryViewController.view.pinToParent() // discoveryViewController.view.isHidden = true @@ -151,12 +146,7 @@ extension SearchViewController { searchBar.delegate = self searchBar.translatesAutoresizingMaskIntoConstraints = false titleViewContainer.addSubview(searchBar) - NSLayoutConstraint.activate([ - searchBar.topAnchor.constraint(equalTo: titleViewContainer.topAnchor), - searchBar.leadingAnchor.constraint(equalTo: titleViewContainer.leadingAnchor), - searchBar.trailingAnchor.constraint(equalTo: titleViewContainer.trailingAnchor), - searchBar.bottomAnchor.constraint(equalTo: titleViewContainer.bottomAnchor), - ]) + searchBar.pinToParent() searchBar.setContentHuggingPriority(.required, for: .horizontal) searchBar.setContentHuggingPriority(.required, for: .vertical) navigationItem.titleView = titleViewContainer diff --git a/Mastodon/Scene/Search/Search/View/SearchRecommendCollectionHeader.swift b/Mastodon/Scene/Search/Search/View/SearchRecommendCollectionHeader.swift index 1d4788ac8..0a65c6a25 100644 --- a/Mastodon/Scene/Search/Search/View/SearchRecommendCollectionHeader.swift +++ b/Mastodon/Scene/Search/Search/View/SearchRecommendCollectionHeader.swift @@ -62,12 +62,7 @@ extension SearchRecommendCollectionHeader { containerStackView.isLayoutMarginsRelativeArrangement = true containerStackView.translatesAutoresizingMaskIntoConstraints = false addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor), - containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor) - ]) + containerStackView.pinToParent() let horizontalStackView = UIStackView() horizontalStackView.spacing = 8 diff --git a/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift b/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift index 62dd1a2cc..f3ebcad00 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchDetailViewController.swift @@ -116,12 +116,7 @@ extension SearchDetailViewController { searchHistoryViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), ]) } else { - NSLayoutConstraint.activate([ - searchHistoryViewController.view.topAnchor.constraint(equalTo: view.topAnchor), - searchHistoryViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - searchHistoryViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - searchHistoryViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + searchHistoryViewController.view.pinToParent() } transition = Transition(style: .fade, duration: 0.1) @@ -289,12 +284,7 @@ extension SearchDetailViewController { navigationBarVisualEffectBackgroundView.translatesAutoresizingMaskIntoConstraints = false view.insertSubview(navigationBarVisualEffectBackgroundView, belowSubview: navigationBarBackgroundView) - NSLayoutConstraint.activate([ - navigationBarVisualEffectBackgroundView.topAnchor.constraint(equalTo: navigationBarBackgroundView.topAnchor), - navigationBarVisualEffectBackgroundView.leadingAnchor.constraint(equalTo: navigationBarBackgroundView.leadingAnchor), - navigationBarVisualEffectBackgroundView.trailingAnchor.constraint(equalTo: navigationBarBackgroundView.trailingAnchor), - navigationBarVisualEffectBackgroundView.bottomAnchor.constraint(equalTo: navigationBarBackgroundView.bottomAnchor), - ]) + navigationBarVisualEffectBackgroundView.pinTo(to: navigationBarBackgroundView) } else { navigationItem.setHidesBackButton(true, animated: false) navigationItem.titleView = nil diff --git a/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController.swift b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController.swift index 52d0ffb9c..ac08e7906 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchHistory/SearchHistoryViewController.swift @@ -47,12 +47,7 @@ extension SearchHistoryViewController { collectionView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(collectionView) - NSLayoutConstraint.activate([ - collectionView.topAnchor.constraint(equalTo: view.topAnchor), - collectionView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - collectionView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - collectionView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + collectionView.pinToParent() collectionView.delegate = self viewModel.setupDiffableDataSource( diff --git a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController.swift b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController.swift index 67de62bf3..6a840f9b5 100644 --- a/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController.swift +++ b/Mastodon/Scene/Search/SearchDetail/SearchResult/SearchResultViewController.swift @@ -49,12 +49,7 @@ extension SearchResultViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self // tableView.prefetchDataSource = self diff --git a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift index 44b6b39c3..efad9693d 100644 --- a/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift +++ b/Mastodon/Scene/Settings/Cell/SettingsAppearanceTableViewCell.swift @@ -101,12 +101,7 @@ extension SettingsAppearanceTableViewCell { stackView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(stackView) - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: contentView.topAnchor), - stackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - stackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - stackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - ]) + stackView.pinToParent() stackView.addArrangedSubview(systemAppearanceView) stackView.addArrangedSubview(darkAppearanceView) diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 53a856fd0..95f6e312e 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -225,12 +225,7 @@ extension SettingsViewController { setupNavigation() view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() setupTableView() updateSectionHeaderStackViewLayout() diff --git a/Mastodon/Scene/Settings/View/AppearanceView.swift b/Mastodon/Scene/Settings/View/AppearanceView.swift index cdc29100b..a09401537 100644 --- a/Mastodon/Scene/Settings/View/AppearanceView.swift +++ b/Mastodon/Scene/Settings/View/AppearanceView.swift @@ -85,12 +85,7 @@ extension AppearanceView { private func setupUI() { imageView.translatesAutoresizingMaskIntoConstraints = false imageViewShadowBackgroundContainer.addSubview(imageView) - NSLayoutConstraint.activate([ - imageView.topAnchor.constraint(equalTo: imageViewShadowBackgroundContainer.topAnchor), - imageView.leadingAnchor.constraint(equalTo: imageViewShadowBackgroundContainer.leadingAnchor), - imageView.trailingAnchor.constraint(equalTo: imageViewShadowBackgroundContainer.trailingAnchor), - imageView.bottomAnchor.constraint(equalTo: imageViewShadowBackgroundContainer.bottomAnchor), - ]) + imageView.pinToParent() imageViewShadowBackgroundContainer.cornerRadius = 4 stackView.addArrangedSubview(imageViewShadowBackgroundContainer) @@ -100,11 +95,8 @@ extension AppearanceView { addSubview(stackView) translatesAutoresizingMaskIntoConstraints = false stackView.translatesAutoresizingMaskIntoConstraints = false + stackView.pinToParent() NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: self.topAnchor), - stackView.leadingAnchor.constraint(equalTo: self.leadingAnchor), - stackView.bottomAnchor.constraint(equalTo: self.bottomAnchor), - stackView.trailingAnchor.constraint(equalTo: self.trailingAnchor), imageView.heightAnchor.constraint(equalTo: imageView.widthAnchor, multiplier: 121.0 / 100.0), // height / width ]) } diff --git a/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewController.swift b/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewController.swift index 0d3c4f574..12820e627 100644 --- a/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewController.swift +++ b/Mastodon/Scene/Share/ContextMenu/ImagePreview/ContextMenuImagePreviewViewController.swift @@ -31,12 +31,7 @@ extension ContextMenuImagePreviewViewController { imageView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(imageView) - NSLayoutConstraint.activate([ - imageView.topAnchor.constraint(equalTo: view.topAnchor), - imageView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - imageView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - imageView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + imageView.pinToParent() imageView.image = viewModel.thumbnail diff --git a/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift b/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift index ca46193b6..8a0901dfe 100644 --- a/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift +++ b/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift @@ -93,12 +93,7 @@ extension ContentWarningOverlayView { vibrancyVisualEffectView.translatesAutoresizingMaskIntoConstraints = false blurVisualEffectView.contentView.addSubview(vibrancyVisualEffectView) - NSLayoutConstraint.activate([ - vibrancyVisualEffectView.topAnchor.constraint(equalTo: blurVisualEffectView.topAnchor), - vibrancyVisualEffectView.leadingAnchor.constraint(equalTo: blurVisualEffectView.leadingAnchor), - vibrancyVisualEffectView.trailingAnchor.constraint(equalTo: blurVisualEffectView.trailingAnchor), - vibrancyVisualEffectView.bottomAnchor.constraint(equalTo: blurVisualEffectView.bottomAnchor), - ]) + vibrancyVisualEffectView.pinToParent() vibrancyContentWarningLabel.translatesAutoresizingMaskIntoConstraints = false vibrancyVisualEffectView.contentView.addSubview(vibrancyContentWarningLabel) @@ -110,12 +105,7 @@ extension ContentWarningOverlayView { blurVisualEffectView.translatesAutoresizingMaskIntoConstraints = false addSubview(blurVisualEffectView) - NSLayoutConstraint.activate([ - blurVisualEffectView.topAnchor.constraint(equalTo: topAnchor), - blurVisualEffectView.leadingAnchor.constraint(equalTo: leadingAnchor), - blurVisualEffectView.trailingAnchor.constraint(equalTo: trailingAnchor), - blurVisualEffectView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + blurVisualEffectView.pinToParent() // blur image style contentOverlayView.translatesAutoresizingMaskIntoConstraints = false @@ -134,12 +124,7 @@ extension ContentWarningOverlayView { blurContentWarningLabelContainer.translatesAutoresizingMaskIntoConstraints = false contentOverlayView.addSubview(blurContentWarningLabelContainer) - NSLayoutConstraint.activate([ - blurContentWarningLabelContainer.topAnchor.constraint(equalTo: topAnchor), - blurContentWarningLabelContainer.leadingAnchor.constraint(equalTo: leadingAnchor), - blurContentWarningLabelContainer.trailingAnchor.constraint(equalTo: trailingAnchor), - blurContentWarningLabelContainer.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + blurContentWarningLabelContainer.pinTo(to: self) let topPaddingView = UIView() let bottomPaddingView = UIView() diff --git a/Mastodon/Scene/Share/View/Content/DoubleTitleLabelNavigationBarTitleView.swift b/Mastodon/Scene/Share/View/Content/DoubleTitleLabelNavigationBarTitleView.swift index 6734b7b77..f5ac0f8ec 100644 --- a/Mastodon/Scene/Share/View/Content/DoubleTitleLabelNavigationBarTitleView.swift +++ b/Mastodon/Scene/Share/View/Content/DoubleTitleLabelNavigationBarTitleView.swift @@ -47,12 +47,7 @@ extension DoubleTitleLabelNavigationBarTitleView { containerView.distribution = .fill containerView.translatesAutoresizingMaskIntoConstraints = false addSubview(containerView) - NSLayoutConstraint.activate([ - containerView.topAnchor.constraint(equalTo: topAnchor), - containerView.leadingAnchor.constraint(equalTo: leadingAnchor), - containerView.trailingAnchor.constraint(equalTo: trailingAnchor), - containerView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + containerView.pinToParent() containerView.addArrangedSubview(titleLabel) containerView.addArrangedSubview(subtitleLabel) diff --git a/Mastodon/Scene/Share/Webview/WebViewController.swift b/Mastodon/Scene/Share/Webview/WebViewController.swift index cb690de93..209ee483d 100644 --- a/Mastodon/Scene/Share/Webview/WebViewController.swift +++ b/Mastodon/Scene/Share/Webview/WebViewController.swift @@ -49,12 +49,7 @@ extension WebViewController { webView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(webView) - NSLayoutConstraint.activate([ - webView.topAnchor.constraint(equalTo: view.topAnchor), - webView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - webView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - webView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + webView.pinToParent() let request = URLRequest(url: viewModel.url) webView.load(request) diff --git a/Mastodon/Scene/SuggestionAccount/CollectionViewCell/SuggestionAccountCollectionViewCell.swift b/Mastodon/Scene/SuggestionAccount/CollectionViewCell/SuggestionAccountCollectionViewCell.swift index 2fb467fbd..296935521 100644 --- a/Mastodon/Scene/SuggestionAccount/CollectionViewCell/SuggestionAccountCollectionViewCell.swift +++ b/Mastodon/Scene/SuggestionAccount/CollectionViewCell/SuggestionAccountCollectionViewCell.swift @@ -53,11 +53,6 @@ extension SuggestionAccountCollectionViewCell { private func configure() { contentView.addSubview(imageView) imageView.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - imageView.topAnchor.constraint(equalTo: contentView.topAnchor), - imageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - imageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - imageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - ]) + imageView.pinToParent() } } diff --git a/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift b/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift index 47bd9d6b3..d259ebed4 100644 --- a/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift +++ b/Mastodon/Scene/SuggestionAccount/TableViewCell/SuggestionAccountTableViewCell.swift @@ -97,12 +97,7 @@ extension SuggestionAccountTableViewCell { containerStackView.isLayoutMarginsRelativeArrangement = true containerStackView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: contentView.topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - ]) + containerStackView.pinToParent() avatarButton.translatesAutoresizingMaskIntoConstraints = false containerStackView.addArrangedSubview(avatarButton) diff --git a/Mastodon/Scene/Thread/ThreadViewController.swift b/Mastodon/Scene/Thread/ThreadViewController.swift index 5dee182c6..e8e6ce130 100644 --- a/Mastodon/Scene/Thread/ThreadViewController.swift +++ b/Mastodon/Scene/Thread/ThreadViewController.swift @@ -87,12 +87,7 @@ extension ThreadViewController { tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource( diff --git a/MastodonSDK/Sources/MastodonExtension/UIView.swift b/MastodonSDK/Sources/MastodonExtension/UIView.swift index f96d1618a..fa62be6c0 100644 --- a/MastodonSDK/Sources/MastodonExtension/UIView.swift +++ b/MastodonSDK/Sources/MastodonExtension/UIView.swift @@ -46,3 +46,20 @@ extension UIView { return self } } + +public extension UIView { + + func pinToParent() { + pinTo(to: self.superview) + } + + func pinTo(to view: UIView?) { + guard let pinToView = view else { return } + NSLayoutConstraint.activate([ + topAnchor.constraint(equalTo: pinToView.topAnchor), + leadingAnchor.constraint(equalTo: pinToView.leadingAnchor), + trailingAnchor.constraint(equalTo: pinToView.trailingAnchor), + bottomAnchor.constraint(equalTo: pinToView.bottomAnchor), + ]) + } +} diff --git a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/AutoComplete/AutoCompleteViewController.swift b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/AutoComplete/AutoCompleteViewController.swift index 9af1ce9bf..ccb483f35 100644 --- a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/AutoComplete/AutoCompleteViewController.swift +++ b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/AutoComplete/AutoCompleteViewController.swift @@ -80,12 +80,7 @@ extension AutoCompleteViewController { tableView.translatesAutoresizingMaskIntoConstraints = false containerBackgroundView.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: containerBackgroundView.topAnchor), - tableView.leadingAnchor.constraint(equalTo: containerBackgroundView.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: containerBackgroundView.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: containerBackgroundView.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDiffableDataSource(tableView: tableView) diff --git a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/AutoComplete/View/AutoCompleteTopChevronView.swift b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/AutoComplete/View/AutoCompleteTopChevronView.swift index 6b842c9f1..98690a3ce 100644 --- a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/AutoComplete/View/AutoCompleteTopChevronView.swift +++ b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/AutoComplete/View/AutoCompleteTopChevronView.swift @@ -65,12 +65,7 @@ extension AutoCompleteTopChevronView { shadowView.translatesAutoresizingMaskIntoConstraints = false addSubview(shadowView) - NSLayoutConstraint.activate([ - shadowView.topAnchor.constraint(equalTo: topAnchor), - shadowView.leadingAnchor.constraint(equalTo: leadingAnchor), - shadowView.trailingAnchor.constraint(equalTo: trailingAnchor), - shadowView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + shadowView.pinToParent() shadowLayer.fillColor = topViewBackgroundColor.cgColor shadowView.layer.addSublayer(shadowLayer) diff --git a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/ComposeContentViewController.swift b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/ComposeContentViewController.swift index b84b47385..48e27aaf2 100644 --- a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/ComposeContentViewController.swift +++ b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/ComposeContentViewController.swift @@ -108,12 +108,7 @@ extension ComposeContentViewController { // setup tableView tableView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(tableView) - NSLayoutConstraint.activate([ - tableView.topAnchor.constraint(equalTo: view.topAnchor), - tableView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - tableView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - tableView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + tableView.pinToParent() tableView.delegate = self viewModel.setupDataSource(tableView: tableView) diff --git a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/EmojiPicker/CustomEmojiPickerInputView.swift b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/EmojiPicker/CustomEmojiPickerInputView.swift index 2fa582883..237164ae2 100644 --- a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/EmojiPicker/CustomEmojiPickerInputView.swift +++ b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/EmojiPicker/CustomEmojiPickerInputView.swift @@ -44,12 +44,7 @@ extension CustomEmojiPickerInputView { collectionView.translatesAutoresizingMaskIntoConstraints = false addSubview(collectionView) - NSLayoutConstraint.activate([ - collectionView.topAnchor.constraint(equalTo: topAnchor), - collectionView.leadingAnchor.constraint(equalTo: leadingAnchor), - collectionView.trailingAnchor.constraint(equalTo: trailingAnchor), - collectionView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + collectionView.pinToParent() activityIndicatorView.hidesWhenStopped = true activityIndicatorView.startAnimating() diff --git a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/EmojiPicker/CustomEmojiPickerItemCollectionViewCell.swift b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/EmojiPicker/CustomEmojiPickerItemCollectionViewCell.swift index c92e689bc..49b1a8269 100644 --- a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/EmojiPicker/CustomEmojiPickerItemCollectionViewCell.swift +++ b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/EmojiPicker/CustomEmojiPickerItemCollectionViewCell.swift @@ -46,12 +46,7 @@ extension CustomEmojiPickerItemCollectionViewCell { private func _init() { emojiImageView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(emojiImageView) - NSLayoutConstraint.activate([ - emojiImageView.topAnchor.constraint(equalTo: contentView.topAnchor), - emojiImageView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - emojiImageView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - emojiImageView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - ]) + emojiImageView.pinToParent() isAccessibilityElement = true accessibilityTraits = .button diff --git a/MastodonSDK/Sources/MastodonUI/SwiftUI/AnimatedImage.swift b/MastodonSDK/Sources/MastodonUI/SwiftUI/AnimatedImage.swift index 9a0f65108..29dd16549 100644 --- a/MastodonSDK/Sources/MastodonUI/SwiftUI/AnimatedImage.swift +++ b/MastodonSDK/Sources/MastodonUI/SwiftUI/AnimatedImage.swift @@ -37,12 +37,7 @@ final public class FLAnimatedImageViewProxy: UIView { imageView.translatesAutoresizingMaskIntoConstraints = false addSubview(imageView) - NSLayoutConstraint.activate([ - imageView.topAnchor.constraint(equalTo: topAnchor), - imageView.leadingAnchor.constraint(equalTo: leadingAnchor), - imageView.trailingAnchor.constraint(equalTo: trailingAnchor), - imageView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + imageView.pinToParent() } required init?(coder: NSCoder) { diff --git a/MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift b/MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift index 57257fd89..d970ac69c 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Button/AvatarButton.swift @@ -32,12 +32,7 @@ open class AvatarButton: UIControl { avatarImageView.frame = bounds avatarImageView.translatesAutoresizingMaskIntoConstraints = false addSubview(avatarImageView) - NSLayoutConstraint.activate([ - avatarImageView.topAnchor.constraint(equalTo: topAnchor), - avatarImageView.leadingAnchor.constraint(equalTo: leadingAnchor), - avatarImageView.trailingAnchor.constraint(equalTo: trailingAnchor), - avatarImageView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + avatarImageView.pinToParent() isAccessibilityElement = true accessibilityLabel = L10n.Common.Controls.Status.showUserProfile diff --git a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift index e3359fb58..b28f63942 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Container/MediaGridContainerView.swift @@ -136,12 +136,7 @@ extension MediaGridContainerView { private func layoutContentWarningOverlay() { contentWarningOverlay.translatesAutoresizingMaskIntoConstraints = false addSubview(contentWarningOverlay) - NSLayoutConstraint.activate([ - contentWarningOverlay.topAnchor.constraint(equalTo: topAnchor), - contentWarningOverlay.leadingAnchor.constraint(equalTo: leadingAnchor), - contentWarningOverlay.trailingAnchor.constraint(equalTo: trailingAnchor), - contentWarningOverlay.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + contentWarningOverlay.pinToParent() } } @@ -208,12 +203,7 @@ extension MediaGridContainerView { let containerVerticalStackView = createStackView(axis: .vertical) containerVerticalStackView.translatesAutoresizingMaskIntoConstraints = false view.addSubview(containerVerticalStackView) - NSLayoutConstraint.activate([ - containerVerticalStackView.topAnchor.constraint(equalTo: view.topAnchor), - containerVerticalStackView.leadingAnchor.constraint(equalTo: view.leadingAnchor), - containerVerticalStackView.trailingAnchor.constraint(equalTo: view.trailingAnchor), - containerVerticalStackView.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + containerVerticalStackView.pinToParent() let count = mediaViews.count switch count { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/FamiliarFollowersDashboardView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/FamiliarFollowersDashboardView.swift index c15f8878a..32d9bce96 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/FamiliarFollowersDashboardView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/FamiliarFollowersDashboardView.swift @@ -45,12 +45,7 @@ extension FamiliarFollowersDashboardView { stackView.translatesAutoresizingMaskIntoConstraints = false addSubview(stackView) - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: topAnchor), - stackView.leadingAnchor.constraint(equalTo: leadingAnchor), - stackView.trailingAnchor.constraint(equalTo: trailingAnchor), - stackView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + stackView.pinToParent() avatarContainerView.translatesAutoresizingMaskIntoConstraints = false stackView.addArrangedSubview(avatarContainerView) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift index f4cee0922..54560a8ce 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/MediaView.swift @@ -138,12 +138,7 @@ extension MediaView { private func layoutImage() { imageView.translatesAutoresizingMaskIntoConstraints = false container.addSubview(imageView) - NSLayoutConstraint.activate([ - imageView.topAnchor.constraint(equalTo: container.topAnchor), - imageView.leadingAnchor.constraint(equalTo: container.leadingAnchor), - imageView.trailingAnchor.constraint(equalTo: container.trailingAnchor), - imageView.bottomAnchor.constraint(equalTo: container.bottomAnchor), - ]) + imageView.pinToParent() } private func bindImage(configuration: Configuration, info: Configuration.ImageInfo) { @@ -168,12 +163,7 @@ extension MediaView { // use view controller as View here playerViewController.view.translatesAutoresizingMaskIntoConstraints = false container.addSubview(playerViewController.view) - NSLayoutConstraint.activate([ - playerViewController.view.topAnchor.constraint(equalTo: container.topAnchor), - playerViewController.view.leadingAnchor.constraint(equalTo: container.leadingAnchor), - playerViewController.view.trailingAnchor.constraint(equalTo: container.trailingAnchor), - playerViewController.view.bottomAnchor.constraint(equalTo: container.bottomAnchor), - ]) + playerViewController.view.pinToParent() setupIndicatorViewHierarchy() playerIndicatorLabel.attributedText = NSAttributedString(string: "GIF") @@ -213,12 +203,7 @@ extension MediaView { private func layoutBlurhash() { blurhashImageView.translatesAutoresizingMaskIntoConstraints = false container.addSubview(blurhashImageView) - NSLayoutConstraint.activate([ - blurhashImageView.topAnchor.constraint(equalTo: container.topAnchor), - blurhashImageView.leadingAnchor.constraint(equalTo: container.leadingAnchor), - blurhashImageView.trailingAnchor.constraint(equalTo: container.trailingAnchor), - blurhashImageView.bottomAnchor.constraint(equalTo: container.bottomAnchor), - ]) + blurhashImageView.pinToParent() } private func bindBlurhash(configuration: Configuration) { @@ -304,12 +289,7 @@ extension MediaView { guard container.superview == nil else { return } container.translatesAutoresizingMaskIntoConstraints = false addSubview(container) - NSLayoutConstraint.activate([ - container.topAnchor.constraint(equalTo: topAnchor), - container.leadingAnchor.constraint(equalTo: leadingAnchor), - container.trailingAnchor.constraint(equalTo: trailingAnchor), - container.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + container.pinToParent() } private func setupIndicatorViewHierarchy() { @@ -329,12 +309,7 @@ extension MediaView { if vibrancyEffectView.superview == nil { vibrancyEffectView.translatesAutoresizingMaskIntoConstraints = false blurEffectView.contentView.addSubview(vibrancyEffectView) - NSLayoutConstraint.activate([ - vibrancyEffectView.topAnchor.constraint(equalTo: blurEffectView.contentView.topAnchor), - vibrancyEffectView.leadingAnchor.constraint(equalTo: blurEffectView.contentView.leadingAnchor), - vibrancyEffectView.trailingAnchor.constraint(equalTo: blurEffectView.contentView.trailingAnchor), - vibrancyEffectView.bottomAnchor.constraint(equalTo: blurEffectView.contentView.bottomAnchor), - ]) + vibrancyEffectView.pinToParent() } if playerIndicatorLabel.superview == nil { diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NewsView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NewsView.swift index 0d4298035..304bcebc4 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NewsView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NewsView.swift @@ -79,12 +79,7 @@ extension NewsView { container.spacing = 8 container.translatesAutoresizingMaskIntoConstraints = false addSubview(container) - NSLayoutConstraint.activate([ - container.topAnchor.constraint(equalTo: topAnchor), - container.leadingAnchor.constraint(equalTo: leadingAnchor), - container.trailingAnchor.constraint(equalTo: trailingAnchor), - container.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + container.pinToParent() // textContainer: V - [ providerContainer | headlineLabel | (spacer) | footnoteLabel ] let textContainer = UIStackView() diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index e52422770..dea3c6c58 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -292,21 +292,11 @@ extension NotificationView { acceptFollowRequestButton.translatesAutoresizingMaskIntoConstraints = false acceptFollowRequestButtonShadowBackgroundContainer.addSubview(acceptFollowRequestButton) - NSLayoutConstraint.activate([ - acceptFollowRequestButton.topAnchor.constraint(equalTo: acceptFollowRequestButtonShadowBackgroundContainer.topAnchor), - acceptFollowRequestButton.leadingAnchor.constraint(equalTo: acceptFollowRequestButtonShadowBackgroundContainer.leadingAnchor), - acceptFollowRequestButton.trailingAnchor.constraint(equalTo: acceptFollowRequestButtonShadowBackgroundContainer.trailingAnchor), - acceptFollowRequestButton.bottomAnchor.constraint(equalTo: acceptFollowRequestButtonShadowBackgroundContainer.bottomAnchor), - ]) + acceptFollowRequestButton.pinToParent() rejectFollowRequestButton.translatesAutoresizingMaskIntoConstraints = false rejectFollowRequestButtonShadowBackgroundContainer.addSubview(rejectFollowRequestButton) - NSLayoutConstraint.activate([ - rejectFollowRequestButton.topAnchor.constraint(equalTo: rejectFollowRequestButtonShadowBackgroundContainer.topAnchor), - rejectFollowRequestButton.leadingAnchor.constraint(equalTo: rejectFollowRequestButtonShadowBackgroundContainer.leadingAnchor), - rejectFollowRequestButton.trailingAnchor.constraint(equalTo: rejectFollowRequestButtonShadowBackgroundContainer.trailingAnchor), - rejectFollowRequestButton.bottomAnchor.constraint(equalTo: rejectFollowRequestButtonShadowBackgroundContainer.bottomAnchor), - ]) + rejectFollowRequestButton.pinToParent() followRequestContainerView.axis = .horizontal followRequestContainerView.distribution = .fillEqually @@ -348,12 +338,7 @@ extension NotificationView { quoteBackgroundView.layoutMargins = UIEdgeInsets(top: 16, left: 0, bottom: 0, right: 0) quoteBackgroundView.translatesAutoresizingMaskIntoConstraints = false quoteStatusViewContainerView.addSubview(quoteBackgroundView) - NSLayoutConstraint.activate([ - quoteBackgroundView.topAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.topAnchor), - quoteBackgroundView.leadingAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.leadingAnchor), - quoteBackgroundView.trailingAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.trailingAnchor), - quoteBackgroundView.bottomAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.bottomAnchor), - ]) + quoteBackgroundView.pinToParent() quoteBackgroundView.backgroundColor = .secondarySystemBackground quoteBackgroundView.layer.masksToBounds = true quoteBackgroundView.layer.cornerCurve = .continuous @@ -363,12 +348,7 @@ extension NotificationView { quoteStatusView.translatesAutoresizingMaskIntoConstraints = false quoteBackgroundView.addSubview(quoteStatusView) - NSLayoutConstraint.activate([ - quoteStatusView.topAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.topAnchor), - quoteStatusView.leadingAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.leadingAnchor), - quoteStatusView.trailingAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.trailingAnchor), - quoteStatusView.bottomAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.bottomAnchor), - ]) + quoteStatusView.pinToParent() quoteStatusView.setup(style: .notificationQuote) statusView.isHidden = true diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift index 04a032563..06672aab6 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift @@ -110,12 +110,7 @@ extension PollOptionView { voteProgressStripView.translatesAutoresizingMaskIntoConstraints = false roundedBackgroundView.addSubview(voteProgressStripView) - NSLayoutConstraint.activate([ - voteProgressStripView.topAnchor.constraint(equalTo: roundedBackgroundView.topAnchor), - voteProgressStripView.leadingAnchor.constraint(equalTo: roundedBackgroundView.leadingAnchor), - voteProgressStripView.trailingAnchor.constraint(equalTo: roundedBackgroundView.trailingAnchor), - voteProgressStripView.bottomAnchor.constraint(equalTo: roundedBackgroundView.bottomAnchor), - ]) + voteProgressStripView.pinToParent() checkmarkBackgroundView.translatesAutoresizingMaskIntoConstraints = false roundedBackgroundView.addSubview(checkmarkBackgroundView) @@ -138,12 +133,7 @@ extension PollOptionView { plusCircleImageView.translatesAutoresizingMaskIntoConstraints = false addSubview(plusCircleImageView) - NSLayoutConstraint.activate([ - plusCircleImageView.topAnchor.constraint(equalTo: checkmarkBackgroundView.topAnchor), - plusCircleImageView.leadingAnchor.constraint(equalTo: checkmarkBackgroundView.leadingAnchor), - plusCircleImageView.trailingAnchor.constraint(equalTo: checkmarkBackgroundView.trailingAnchor), - plusCircleImageView.bottomAnchor.constraint(equalTo: checkmarkBackgroundView.bottomAnchor), - ]) + plusCircleImageView.pinToParent() optionTextField.translatesAutoresizingMaskIntoConstraints = false roundedBackgroundView.addSubview(optionTextField) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/ProfileCardView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/ProfileCardView.swift index b93d44b73..cb7d8f839 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/ProfileCardView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/ProfileCardView.swift @@ -137,12 +137,7 @@ extension ProfileCardView { container.spacing = 8 container.translatesAutoresizingMaskIntoConstraints = false addSubview(container) - NSLayoutConstraint.activate([ - container.topAnchor.constraint(equalTo: topAnchor), - container.leadingAnchor.constraint(equalTo: leadingAnchor), - container.trailingAnchor.constraint(equalTo: trailingAnchor), - container.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + container.pinToParent() // bannerContainer let bannerContainer = UIView() @@ -237,11 +232,8 @@ extension ProfileCardView { relationshipActionButton.translatesAutoresizingMaskIntoConstraints = false relationshipActionButtonShadowContainer.addSubview(relationshipActionButton) + relationshipActionButton.pinToParent() NSLayoutConstraint.activate([ - relationshipActionButton.topAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.topAnchor), - relationshipActionButton.leadingAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.leadingAnchor), - relationshipActionButton.trailingAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.trailingAnchor), - relationshipActionButton.bottomAnchor.constraint(equalTo: relationshipActionButtonShadowContainer.bottomAnchor), relationshipActionButtonShadowContainer.widthAnchor.constraint(greaterThanOrEqualToConstant: ProfileCardView.friendshipActionButtonSize.width).priority(.required - 1), relationshipActionButtonShadowContainer.heightAnchor.constraint(equalToConstant: ProfileCardView.friendshipActionButtonSize.height).priority(.required - 1), ]) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift index 563bc7e3d..4943746b1 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/StatusView.swift @@ -236,12 +236,7 @@ extension StatusView { // container containerStackView.translatesAutoresizingMaskIntoConstraints = false addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + containerStackView.pinToParent() // header headerIconImageView.isUserInteractionEnabled = false @@ -392,12 +387,7 @@ extension StatusView.Style { statusView.spoilerOverlayView.translatesAutoresizingMaskIntoConstraints = false statusView.containerStackView.addSubview(statusView.spoilerOverlayView) - NSLayoutConstraint.activate([ - statusView.contentContainer.topAnchor.constraint(equalTo: statusView.spoilerOverlayView.topAnchor), - statusView.contentContainer.leadingAnchor.constraint(equalTo: statusView.spoilerOverlayView.leadingAnchor), - statusView.contentContainer.trailingAnchor.constraint(equalTo: statusView.spoilerOverlayView.trailingAnchor), - statusView.contentContainer.bottomAnchor.constraint(equalTo: statusView.spoilerOverlayView.bottomAnchor), - ]) + statusView.contentContainer.pinTo(to: statusView.spoilerOverlayView) // media container: V - [ mediaGridContainerView ] statusView.mediaContainerView.translatesAutoresizingMaskIntoConstraints = false @@ -409,12 +399,7 @@ extension StatusView.Style { statusView.mediaGridContainerView.translatesAutoresizingMaskIntoConstraints = false statusView.mediaContainerView.addSubview(statusView.mediaGridContainerView) - NSLayoutConstraint.activate([ - statusView.mediaGridContainerView.topAnchor.constraint(equalTo: statusView.mediaContainerView.topAnchor), - statusView.mediaGridContainerView.leadingAnchor.constraint(equalTo: statusView.mediaContainerView.leadingAnchor), - statusView.mediaGridContainerView.trailingAnchor.constraint(equalTo: statusView.mediaContainerView.trailingAnchor), - statusView.mediaGridContainerView.bottomAnchor.constraint(equalTo: statusView.mediaContainerView.bottomAnchor), - ]) + statusView.mediaGridContainerView.pinToParent() // pollContainerView: V - [ pollTableView | pollStatusStackView ] statusView.pollAdaptiveMarginContainerView.contentView = statusView.pollContainerView diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/UserView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/UserView.swift index cb066abfd..901a6547f 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/UserView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/UserView.swift @@ -66,12 +66,7 @@ extension UserView { // container containerStackView.translatesAutoresizingMaskIntoConstraints = false addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor) - ]) + containerStackView.pinToParent() avatarButton.translatesAutoresizingMaskIntoConstraints = false containerStackView.addArrangedSubview(avatarButton) diff --git a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift index 98139b00e..c9074f9b5 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Control/SpoilerOverlayView.swift @@ -48,12 +48,7 @@ extension SpoilerOverlayView { private func _init() { containerStackView.translatesAutoresizingMaskIntoConstraints = false addSubview(containerStackView) - NSLayoutConstraint.activate([ - containerStackView.topAnchor.constraint(equalTo: topAnchor), - containerStackView.leadingAnchor.constraint(equalTo: leadingAnchor), - containerStackView.trailingAnchor.constraint(equalTo: trailingAnchor), - containerStackView.bottomAnchor.constraint(equalTo: bottomAnchor), - ]) + containerStackView.pinToParent() let topPaddingView = UIView() topPaddingView.translatesAutoresizingMaskIntoConstraints = false diff --git a/MastodonSDK/Sources/MastodonUI/View/TableViewCell/PollOptionTableViewCell.swift b/MastodonSDK/Sources/MastodonUI/View/TableViewCell/PollOptionTableViewCell.swift index 6ae6ea0b5..d1e1a90f4 100644 --- a/MastodonSDK/Sources/MastodonUI/View/TableViewCell/PollOptionTableViewCell.swift +++ b/MastodonSDK/Sources/MastodonUI/View/TableViewCell/PollOptionTableViewCell.swift @@ -53,12 +53,7 @@ extension PollOptionTableViewCell { pollOptionView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(pollOptionView) - NSLayoutConstraint.activate([ - pollOptionView.topAnchor.constraint(equalTo: contentView.topAnchor), - pollOptionView.leadingAnchor.constraint(equalTo: contentView.leadingAnchor), - pollOptionView.trailingAnchor.constraint(equalTo: contentView.trailingAnchor), - pollOptionView.bottomAnchor.constraint(equalTo: contentView.bottomAnchor), - ]) + pollOptionView.pinToParent() pollOptionView.setup(style: .plain) } diff --git a/MastodonSDK/Sources/MastodonUI/View/TableViewCell/ProfileCardTableViewCell.swift b/MastodonSDK/Sources/MastodonUI/View/TableViewCell/ProfileCardTableViewCell.swift index 2d210f20c..a14028ea2 100644 --- a/MastodonSDK/Sources/MastodonUI/View/TableViewCell/ProfileCardTableViewCell.swift +++ b/MastodonSDK/Sources/MastodonUI/View/TableViewCell/ProfileCardTableViewCell.swift @@ -67,12 +67,7 @@ extension ProfileCardTableViewCell { profileCardView.translatesAutoresizingMaskIntoConstraints = false contentView.addSubview(profileCardView) - NSLayoutConstraint.activate([ - profileCardView.topAnchor.constraint(equalTo: shadowBackgroundContainer.topAnchor), - profileCardView.leadingAnchor.constraint(equalTo: shadowBackgroundContainer.leadingAnchor), - profileCardView.trailingAnchor.constraint(equalTo: shadowBackgroundContainer.trailingAnchor), - profileCardView.bottomAnchor.constraint(equalTo: shadowBackgroundContainer.bottomAnchor), - ]) + profileCardView.pinTo(to: shadowBackgroundContainer) profileCardView.delegate = self diff --git a/MastodonSDK/Sources/MastodonUI/View/TableViewCell/TimelineLoaderTableViewCell.swift b/MastodonSDK/Sources/MastodonUI/View/TableViewCell/TimelineLoaderTableViewCell.swift index 6e396dc6d..7f5b355d3 100644 --- a/MastodonSDK/Sources/MastodonUI/View/TableViewCell/TimelineLoaderTableViewCell.swift +++ b/MastodonSDK/Sources/MastodonUI/View/TableViewCell/TimelineLoaderTableViewCell.swift @@ -96,12 +96,7 @@ open class TimelineLoaderTableViewCell: UITableViewCell { stackView.translatesAutoresizingMaskIntoConstraints = false stackView.isUserInteractionEnabled = false contentView.addSubview(stackView) - NSLayoutConstraint.activate([ - stackView.topAnchor.constraint(equalTo: loadMoreButton.topAnchor), - stackView.leadingAnchor.constraint(equalTo: loadMoreButton.leadingAnchor), - stackView.trailingAnchor.constraint(equalTo: loadMoreButton.trailingAnchor), - stackView.bottomAnchor.constraint(equalTo: loadMoreButton.bottomAnchor), - ]) + stackView.pinTo(to: loadMoreButton) let leftPaddingView = UIView() leftPaddingView.translatesAutoresizingMaskIntoConstraints = false stackView.addArrangedSubview(leftPaddingView) diff --git a/ShareActionExtension/Scene/ShareViewController.swift b/ShareActionExtension/Scene/ShareViewController.swift index 7757452cd..372ce5876 100644 --- a/ShareActionExtension/Scene/ShareViewController.swift +++ b/ShareActionExtension/Scene/ShareViewController.swift @@ -102,12 +102,7 @@ extension ShareViewController { addChild(composeContentViewController) composeContentViewController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(composeContentViewController.view) - NSLayoutConstraint.activate([ - composeContentViewController.view.topAnchor.constraint(equalTo: view.topAnchor), - composeContentViewController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - composeContentViewController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - composeContentViewController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor), - ]) + composeContentViewController.view.pinToParent() composeContentViewController.didMove(toParent: self) self.composeContentViewModel = composeContentViewModel From 60235c3989b205828e411e7ae9dd40991e3d03d4 Mon Sep 17 00:00:00 2001 From: Stefan Painhapp <4242986+painhapp@users.noreply.github.com> Date: Fri, 18 Nov 2022 01:47:55 +0900 Subject: [PATCH 2/8] Add missing view --- .../MediaPreview/Video/MediaPreviewVideoViewController.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift b/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift index 5c18c1e5e..3981c485a 100644 --- a/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift +++ b/Mastodon/Scene/MediaPreview/Video/MediaPreviewVideoViewController.swift @@ -39,7 +39,7 @@ extension MediaPreviewVideoViewController { addChild(playerViewController) playerViewController.view.translatesAutoresizingMaskIntoConstraints = false view.addSubview(playerViewController.view) - playerViewController.pinToParent() + playerViewController.view.pinToParent() playerViewController.didMove(toParent: self) if let contentOverlayView = playerViewController.contentOverlayView { From bf01ef80f698874bcba18e0e31b784b482632ab0 Mon Sep 17 00:00:00 2001 From: Stefan Painhapp <4242986+painhapp@users.noreply.github.com> Date: Fri, 18 Nov 2022 01:54:03 +0900 Subject: [PATCH 3/8] Revert changes in NotificationView --- .../MastodonUI/View/Content/NotificationView.swift | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift index dea3c6c58..e6263dda9 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView.swift @@ -338,7 +338,12 @@ extension NotificationView { quoteBackgroundView.layoutMargins = UIEdgeInsets(top: 16, left: 0, bottom: 0, right: 0) quoteBackgroundView.translatesAutoresizingMaskIntoConstraints = false quoteStatusViewContainerView.addSubview(quoteBackgroundView) - quoteBackgroundView.pinToParent() + NSLayoutConstraint.activate([ + quoteBackgroundView.topAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.topAnchor), + quoteBackgroundView.leadingAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.leadingAnchor), + quoteBackgroundView.trailingAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.trailingAnchor), + quoteBackgroundView.bottomAnchor.constraint(equalTo: quoteStatusViewContainerView.layoutMarginsGuide.bottomAnchor), + ]) quoteBackgroundView.backgroundColor = .secondarySystemBackground quoteBackgroundView.layer.masksToBounds = true quoteBackgroundView.layer.cornerCurve = .continuous @@ -348,7 +353,12 @@ extension NotificationView { quoteStatusView.translatesAutoresizingMaskIntoConstraints = false quoteBackgroundView.addSubview(quoteStatusView) - quoteStatusView.pinToParent() + NSLayoutConstraint.activate([ + quoteStatusView.topAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.topAnchor), + quoteStatusView.leadingAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.leadingAnchor), + quoteStatusView.trailingAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.trailingAnchor), + quoteStatusView.bottomAnchor.constraint(equalTo: quoteBackgroundView.layoutMarginsGuide.bottomAnchor), + ]) quoteStatusView.setup(style: .notificationQuote) statusView.isHidden = true From 9e65ccfd7eb25fcd425d1afe881b64d1777d2709 Mon Sep 17 00:00:00 2001 From: Stefan Painhapp <4242986+painhapp@users.noreply.github.com> Date: Fri, 18 Nov 2022 01:56:39 +0900 Subject: [PATCH 4/8] Pin plusCircleImageView to checkmarkBackgroundView --- .../Sources/MastodonUI/View/Content/PollOptionView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift index 06672aab6..514657e62 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/PollOptionView.swift @@ -133,7 +133,7 @@ extension PollOptionView { plusCircleImageView.translatesAutoresizingMaskIntoConstraints = false addSubview(plusCircleImageView) - plusCircleImageView.pinToParent() + plusCircleImageView.pinTo(to: checkmarkBackgroundView) optionTextField.translatesAutoresizingMaskIntoConstraints = false roundedBackgroundView.addSubview(optionTextField) From e56104c7569afd7ac916241a1bcb366c3a5287aa Mon Sep 17 00:00:00 2001 From: Stefan Painhapp <4242986+painhapp@users.noreply.github.com> Date: Fri, 18 Nov 2022 02:07:33 +0900 Subject: [PATCH 5/8] Revert paddingView.pinToParent --- .../View/PickServerServerSectionTableHeaderView.swift | 5 ++++- Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift b/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift index f4b05cab3..ae8c16bb8 100644 --- a/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift +++ b/Mastodon/Scene/Onboarding/PickServer/View/PickServerServerSectionTableHeaderView.swift @@ -83,8 +83,11 @@ final class PickServerServerSectionTableHeaderView: UIView { let paddingView = UIView() paddingView.translatesAutoresizingMaskIntoConstraints = false containerView.addSubview(paddingView) - paddingView.pinToParent() NSLayoutConstraint.activate([ + paddingView.topAnchor.constraint(equalTo: containerView.topAnchor), + paddingView.leadingAnchor.constraint(equalTo: imageView.trailingAnchor), + paddingView.trailingAnchor.constraint(equalTo: containerView.trailingAnchor), + paddingView.bottomAnchor.constraint(equalTo: containerView.bottomAnchor), paddingView.widthAnchor.constraint(equalToConstant: 4).priority(.defaultHigh), ]) return containerView diff --git a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift index 49963f7fb..d832debd7 100644 --- a/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift +++ b/Mastodon/Scene/Profile/Header/View/ProfileHeaderView.swift @@ -281,7 +281,7 @@ extension ProfileHeaderView { followsYouVibrantEffectView.translatesAutoresizingMaskIntoConstraints = false followsYouBlurEffectView.contentView.addSubview(followsYouVibrantEffectView) - followsYouVibrantEffectView.pinToParent() + followsYouVibrantEffectView.pinTo(to: followsYouBlurEffectView) followsYouLabel.translatesAutoresizingMaskIntoConstraints = false followsYouVibrantEffectView.contentView.addSubview(followsYouLabel) From ebe293216c43bd12015d427e610ca666f3b2a35b Mon Sep 17 00:00:00 2001 From: Stefan Painhapp <4242986+painhapp@users.noreply.github.com> Date: Fri, 18 Nov 2022 02:32:26 +0900 Subject: [PATCH 6/8] Pin vibrancyVisualEffectView to blurVisualEffectView --- .../Scene/Share/View/Content/ContentWarningOverlayView.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift b/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift index 8a0901dfe..eb55dc575 100644 --- a/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift +++ b/Mastodon/Scene/Share/View/Content/ContentWarningOverlayView.swift @@ -93,7 +93,7 @@ extension ContentWarningOverlayView { vibrancyVisualEffectView.translatesAutoresizingMaskIntoConstraints = false blurVisualEffectView.contentView.addSubview(vibrancyVisualEffectView) - vibrancyVisualEffectView.pinToParent() + vibrancyVisualEffectView.pinTo(to: blurVisualEffectView) vibrancyContentWarningLabel.translatesAutoresizingMaskIntoConstraints = false vibrancyVisualEffectView.contentView.addSubview(vibrancyContentWarningLabel) From 560a1d9ac573457483ca0d9921843850cd5e8599 Mon Sep 17 00:00:00 2001 From: Jed Fox Date: Thu, 17 Nov 2022 14:15:56 -0500 Subject: [PATCH 7/8] Add names to the Run Script actions --- Mastodon.xcodeproj/project.pbxproj | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/Mastodon.xcodeproj/project.pbxproj b/Mastodon.xcodeproj/project.pbxproj index ae8410c35..ac6370a95 100644 --- a/Mastodon.xcodeproj/project.pbxproj +++ b/Mastodon.xcodeproj/project.pbxproj @@ -2692,9 +2692,9 @@ DB427DCF25BAA00100D1B89D /* Frameworks */, DB89BA0825C10FD0008580ED /* Embed Frameworks */, DBF8AE1B263293E400C9C23C /* Embed Foundation Extensions */, - DB3D100425BAA71500EAA174 /* ShellScript */, - DB025B8E278D6448002F581E /* ShellScript */, - DB697DD2278F48D5004EF2F7 /* ShellScript */, + DB3D100425BAA71500EAA174 /* Run SwiftGen */, + DB025B8E278D6448002F581E /* Run Sourcery: Core Data */, + DB697DD2278F48D5004EF2F7 /* Run Sourcery */, ); buildRules = ( ); @@ -3010,7 +3010,7 @@ shellScript = "diff \"${PODS_PODFILE_DIR_PATH}/Podfile.lock\" \"${PODS_ROOT}/Manifest.lock\" > /dev/null\nif [ $? != 0 ] ; then\n # print error to STDERR\n echo \"error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.\" >&2\n exit 1\nfi\n# This output is used by Xcode 'outputs' to avoid re-running this script phase.\necho \"SUCCESS\" > \"${SCRIPT_OUTPUT_FILE_0}\"\n"; showEnvVarsInLog = 0; }; - DB025B8E278D6448002F581E /* ShellScript */ = { + DB025B8E278D6448002F581E /* Run Sourcery: Core Data */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 12; @@ -3020,6 +3020,7 @@ ); inputPaths = ( ); + name = "Run Sourcery: Core Data"; outputFileListPaths = ( ); outputPaths = ( @@ -3028,7 +3029,7 @@ shellPath = /bin/sh; shellScript = "if [[ -f \"${PODS_ROOT}/Sourcery/bin/sourcery\" ]]; then\n \"${PODS_ROOT}/Sourcery/bin/sourcery\" --config ./MastodonSDK/Sources/CoreDataStack\nelse\n echo \"warning: Sourcery is not installed. Run 'pod install --repo-update' to install it.\"\nfi\n"; }; - DB3D100425BAA71500EAA174 /* ShellScript */ = { + DB3D100425BAA71500EAA174 /* Run SwiftGen */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 12; @@ -3038,6 +3039,7 @@ ); inputPaths = ( ); + name = "Run SwiftGen"; outputFileListPaths = ( ); outputPaths = ( @@ -3046,7 +3048,7 @@ shellPath = /bin/sh; shellScript = "if [[ -f \"${PODS_ROOT}/SwiftGen/bin/swiftgen\" ]]; then\n \"${PODS_ROOT}/SwiftGen/bin/swiftgen\" \nelse\n echo \"warning: SwiftGen is not installed. Run 'pod install --repo-update' to install it.\"\nfi\n"; }; - DB697DD2278F48D5004EF2F7 /* ShellScript */ = { + DB697DD2278F48D5004EF2F7 /* Run Sourcery */ = { isa = PBXShellScriptBuildPhase; alwaysOutOfDate = 1; buildActionMask = 12; @@ -3056,6 +3058,7 @@ ); inputPaths = ( ); + name = "Run Sourcery"; outputFileListPaths = ( ); outputPaths = ( From 96c3e17531acbc2e4321466b4a2adb9a860e7eb8 Mon Sep 17 00:00:00 2001 From: Nathan Mattes Date: Thu, 17 Nov 2022 23:02:43 +0100 Subject: [PATCH 8/8] Fix some warnings --- Mastodon/Activity/SafariActivity.swift | 2 +- .../Provider/DataSourceFacade+Follow.swift | 2 +- .../Provider/DataSourceFacade+Hashtag.swift | 4 ++-- .../Provider/DataSourceFacade+Media.swift | 2 +- .../Provider/DataSourceFacade+Meta.swift | 6 +++--- .../Provider/DataSourceFacade+Profile.swift | 6 +++--- .../Provider/DataSourceFacade+Status.swift | 5 +++-- ...rceProvider+StatusTableViewCellDelegate.swift | 4 ++-- .../DataSourceProvider+UITableViewDelegate.swift | 2 +- .../Scene/Compose/ComposeViewController.swift | 7 ++----- .../DiscoveryCommunityViewModel+State.swift | 2 +- .../DiscoveryHashtagsViewController.swift | 4 ++-- .../News/DiscoveryNewsViewController.swift | 4 ++-- .../News/DiscoveryNewsViewModel+State.swift | 3 +-- .../Posts/DiscoveryPostsViewModel+State.swift | 2 +- .../HashtagTimelineViewModel+State.swift | 4 ++-- .../HomeTimelineViewController+DebugAction.swift | 16 ++++++++-------- .../HomeTimelineViewController.swift | 4 ++-- .../HomeTimelineViewModel+LoadLatestState.swift | 2 +- .../MediaPreviewViewController.swift | 2 +- .../MastodonConfirmEmailViewController.swift | 11 +++++------ .../MastodonRegisterViewController+Avatar.swift | 2 +- .../Favorite/FavoriteViewModel+State.swift | 5 ++--- .../Scene/Profile/ProfileViewController.swift | 2 +- .../UserLIst/UserListViewModel+State.swift | 2 +- .../Report/Report/ReportViewController.swift | 2 +- .../ReportStatusViewModel+State.swift | 2 +- .../Root/MainTab/MainTabBarController.swift | 2 +- .../Search/Search/SearchViewController.swift | 2 +- .../Scene/Settings/SettingsViewController.swift | 4 ++-- .../SuggestionAccountViewController.swift | 2 +- ...viewViewControllerAnimatedTransitioning.swift | 2 +- .../AttachmentViewModel+Compress.swift | 2 +- .../Content/NotificationView+ViewModel.swift | 1 - 34 files changed, 59 insertions(+), 65 deletions(-) diff --git a/Mastodon/Activity/SafariActivity.swift b/Mastodon/Activity/SafariActivity.swift index 62a193eaf..e20a9f815 100644 --- a/Mastodon/Activity/SafariActivity.swift +++ b/Mastodon/Activity/SafariActivity.swift @@ -58,7 +58,7 @@ final class SafariActivity: UIActivity { } Task { - await sceneCoordinator?.present(scene: .safari(url: url as URL), from: nil, transition: .safariPresent(animated: true, completion: nil)) + _ = await sceneCoordinator?.present(scene: .safari(url: url as URL), from: nil, transition: .safariPresent(animated: true, completion: nil)) activityDidFinish(true) } } diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Follow.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Follow.swift index b3812f198..a85de703a 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Follow.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Follow.swift @@ -94,7 +94,7 @@ extension DataSourceFacade { let alertController = await UIAlertController(for: error, title: nil, preferredStyle: .alert) let okAction = await UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default) await alertController.addAction(okAction) - await dependency.coordinator.present( + _ = await dependency.coordinator.present( scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil) diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Hashtag.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Hashtag.swift index 43d6b954b..6135c904a 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Hashtag.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Hashtag.swift @@ -35,7 +35,7 @@ extension DataSourceFacade { hashtag: tag.name ) - provider.coordinator.present( + _ = provider.coordinator.present( scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: provider, transition: .show @@ -61,7 +61,7 @@ extension DataSourceFacade { hashtag: name ) - provider.coordinator.present( + _ = provider.coordinator.present( scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: provider, transition: .show diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Media.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Media.swift index 3e767f2d3..9dd97f38a 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Media.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Media.swift @@ -24,7 +24,7 @@ extension DataSourceFacade { item: mediaPreviewItem, transitionItem: mediaPreviewTransitionItem ) - dependency.coordinator.present( + _ = dependency.coordinator.present( scene: .mediaPreview(viewModel: mediaPreviewViewModel), from: dependency, transition: .custom(transitioningDelegate: dependency.mediaPreviewTransitionController) diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Meta.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Meta.swift index 7e0ed37fc..dd3c4903a 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Meta.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Meta.swift @@ -56,13 +56,13 @@ extension DataSourceFacade { url.pathComponents[2] == "statuses" { let statusID = url.pathComponents[3] let threadViewModel = RemoteThreadViewModel(context: provider.context, authContext: provider.authContext, statusID: statusID) - await provider.coordinator.present(scene: .thread(viewModel: threadViewModel), from: nil, transition: .show) + _ = await provider.coordinator.present(scene: .thread(viewModel: threadViewModel), from: nil, transition: .show) } else { - await provider.coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) + _ = await provider.coordinator.present(scene: .safari(url: url), from: nil, transition: .safariPresent(animated: true, completion: nil)) } case .hashtag(_, let hashtag, _): let hashtagTimelineViewModel = HashtagTimelineViewModel(context: provider.context, authContext: provider.authContext, hashtag: hashtag) - await provider.coordinator.present(scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: provider, transition: .show) + _ = await provider.coordinator.present(scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: provider, transition: .show) case .mention(_, let mention, let userInfo): await coordinateToProfileScene( provider: provider, diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Profile.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Profile.swift index ef01b8394..3c0509d2c 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Profile.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Profile.swift @@ -47,7 +47,7 @@ extension DataSourceFacade { mastodonUser: user ) - provider.coordinator.present( + _ = provider.coordinator.present( scene: .profile(viewModel: profileViewModel), from: provider, transition: .show @@ -75,7 +75,7 @@ extension DataSourceFacade { } guard let mention = mentions?.first(where: { $0.username == mention }) else { - await provider.coordinator.present( + _ = await provider.coordinator.present( scene: .safari(url: url), from: provider, transition: .safariPresent(animated: true, completion: nil) @@ -102,7 +102,7 @@ extension DataSourceFacade { } }() - await provider.coordinator.present( + _ = await provider.coordinator.present( scene: .profile(viewModel: profileViewModel), from: provider, transition: .show diff --git a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift index 332ed75e4..506048bbf 100644 --- a/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift +++ b/Mastodon/Protocol/Provider/DataSourceFacade+Status.swift @@ -43,7 +43,7 @@ extension DataSourceFacade { dependency: provider, status: status ) - provider.coordinator.present( + _ = provider.coordinator.present( scene: .activityViewController( activityViewController: activityViewController, sourceView: button, @@ -358,7 +358,8 @@ extension DataSourceFacade { dependency: dependency, status: status ) - await dependency.coordinator.present( + + _ = dependency.coordinator.present( scene: .activityViewController( activityViewController: activityViewController, sourceView: menuContext.button, diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift index 82c25d040..c157b7086 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+StatusTableViewCellDelegate.swift @@ -487,7 +487,7 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider & AuthConte authContext: authContext, kind: .rebloggedBy(status: status) ) - await coordinator.present( + _ = await coordinator.present( scene: .rebloggedBy(viewModel: userListViewModel), from: self, transition: .show @@ -511,7 +511,7 @@ extension StatusTableViewCellDelegate where Self: DataSourceProvider & AuthConte authContext: authContext, kind: .favoritedBy(status: status) ) - await coordinator.present( + _ = await coordinator.present( scene: .favoritedBy(viewModel: userListViewModel), from: self, transition: .show diff --git a/Mastodon/Protocol/Provider/DataSourceProvider+UITableViewDelegate.swift b/Mastodon/Protocol/Provider/DataSourceProvider+UITableViewDelegate.swift index 3a71e5346..6ced42601 100644 --- a/Mastodon/Protocol/Provider/DataSourceProvider+UITableViewDelegate.swift +++ b/Mastodon/Protocol/Provider/DataSourceProvider+UITableViewDelegate.swift @@ -143,7 +143,7 @@ extension UITableViewDelegate where Self: DataSourceProvider & MediaPreviewableV title: L10n.Common.Alerts.SavePhotoFailure.title, message: L10n.Common.Alerts.SavePhotoFailure.message ) - self.coordinator.present( + _ = self.coordinator.present( scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil) diff --git a/Mastodon/Scene/Compose/ComposeViewController.swift b/Mastodon/Scene/Compose/ComposeViewController.swift index fd5ed5817..0cc4557a4 100644 --- a/Mastodon/Scene/Compose/ComposeViewController.swift +++ b/Mastodon/Scene/Compose/ComposeViewController.swift @@ -93,10 +93,7 @@ extension ComposeViewController { .sink { [weak self] _ in guard let self = self else { return } guard self.traitCollection.userInterfaceIdiom == .pad else { return } - var items = [self.publishBarButtonItem] - // if self.traitCollection.horizontalSizeClass == .regular { - // items.append(self.characterCountBarButtonItem) - // } + let items = [self.publishBarButtonItem] self.navigationItem.rightBarButtonItems = items } .store(in: &disposeBag) @@ -175,7 +172,7 @@ extension ComposeViewController { let alertController = UIAlertController(for: error, title: nil, preferredStyle: .alert) let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil) alertController.addAction(okAction) - coordinator.present(scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil)) + _ = coordinator.present(scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil)) return } diff --git a/Mastodon/Scene/Discovery/Community/DiscoveryCommunityViewModel+State.swift b/Mastodon/Scene/Discovery/Community/DiscoveryCommunityViewModel+State.swift index 476832b69..5045e825a 100644 --- a/Mastodon/Scene/Discovery/Community/DiscoveryCommunityViewModel+State.swift +++ b/Mastodon/Scene/Discovery/Community/DiscoveryCommunityViewModel+State.swift @@ -125,7 +125,7 @@ extension DiscoveryCommunityViewModel.State { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let viewModel else { return } switch previousState { case is Reloading: diff --git a/Mastodon/Scene/Discovery/Hashtags/DiscoveryHashtagsViewController.swift b/Mastodon/Scene/Discovery/Hashtags/DiscoveryHashtagsViewController.swift index 1c855c254..b56098b58 100644 --- a/Mastodon/Scene/Discovery/Hashtags/DiscoveryHashtagsViewController.swift +++ b/Mastodon/Scene/Discovery/Hashtags/DiscoveryHashtagsViewController.swift @@ -108,7 +108,7 @@ extension DiscoveryHashtagsViewController: UITableViewDelegate { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): \(indexPath)") guard case let .hashtag(tag) = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { return } let hashtagTimelineViewModel = HashtagTimelineViewModel(context: context, authContext: viewModel.authContext, hashtag: tag.name) - coordinator.present( + _ = coordinator.present( scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: self, transition: .show @@ -218,7 +218,7 @@ extension DiscoveryHashtagsViewController: TableViewControllerNavigateable { guard case let .hashtag(tag) = item else { return } let hashtagTimelineViewModel = HashtagTimelineViewModel(context: context, authContext: viewModel.authContext, hashtag: tag.name) - coordinator.present( + _ = coordinator.present( scene: .hashtagTimeline(viewModel: hashtagTimelineViewModel), from: self, transition: .show diff --git a/Mastodon/Scene/Discovery/News/DiscoveryNewsViewController.swift b/Mastodon/Scene/Discovery/News/DiscoveryNewsViewController.swift index d1634db82..558830473 100644 --- a/Mastodon/Scene/Discovery/News/DiscoveryNewsViewController.swift +++ b/Mastodon/Scene/Discovery/News/DiscoveryNewsViewController.swift @@ -117,7 +117,7 @@ extension DiscoveryNewsViewController: UITableViewDelegate { logger.log(level: .debug, "\((#file as NSString).lastPathComponent, privacy: .public)[\(#line, privacy: .public)], \(#function, privacy: .public): \(indexPath)") guard case let .link(link) = viewModel.diffableDataSource?.itemIdentifier(for: indexPath) else { return } guard let url = URL(string: link.url) else { return } - coordinator.present( + _ = coordinator.present( scene: .safari(url: url), from: self, transition: .safariPresent(animated: true, completion: nil) @@ -214,7 +214,7 @@ extension DiscoveryNewsViewController: TableViewControllerNavigateable { guard case let .link(link) = item else { return } guard let url = URL(string: link.url) else { return } - coordinator.present( + _ = coordinator.present( scene: .safari(url: url), from: self, transition: .safariPresent(animated: true, completion: nil) diff --git a/Mastodon/Scene/Discovery/News/DiscoveryNewsViewModel+State.swift b/Mastodon/Scene/Discovery/News/DiscoveryNewsViewModel+State.swift index 7c802cde3..8170d5b1c 100644 --- a/Mastodon/Scene/Discovery/News/DiscoveryNewsViewModel+State.swift +++ b/Mastodon/Scene/Discovery/News/DiscoveryNewsViewModel+State.swift @@ -125,8 +125,7 @@ extension DiscoveryNewsViewModel.State { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } - + guard let viewModel else { return } switch previousState { case is Reloading: diff --git a/Mastodon/Scene/Discovery/Posts/DiscoveryPostsViewModel+State.swift b/Mastodon/Scene/Discovery/Posts/DiscoveryPostsViewModel+State.swift index 3ed245e99..fd413927e 100644 --- a/Mastodon/Scene/Discovery/Posts/DiscoveryPostsViewModel+State.swift +++ b/Mastodon/Scene/Discovery/Posts/DiscoveryPostsViewModel+State.swift @@ -126,7 +126,7 @@ extension DiscoveryPostsViewModel.State { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let viewModel else { return } switch previousState { case is Reloading: diff --git a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+State.swift b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+State.swift index deb9de0a2..c35715f1e 100644 --- a/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+State.swift +++ b/Mastodon/Scene/HashtagTimeline/HashtagTimelineViewModel+State.swift @@ -70,7 +70,7 @@ extension HashtagTimelineViewModel.State { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let stateMachine = stateMachine else { return } stateMachine.enter(Loading.self) } @@ -127,7 +127,7 @@ extension HashtagTimelineViewModel.State { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let viewModel else { return } switch previousState { case is Reloading: diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift index d057c0376..ff90775ff 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController+DebugAction.swift @@ -300,7 +300,7 @@ extension HomeTimelineViewController { } @objc private func showWelcomeAction(_ sender: UIAction) { - coordinator.present(scene: .welcome, from: self, transition: .modal(animated: true, completion: nil)) + _ = coordinator.present(scene: .welcome, from: self, transition: .modal(animated: true, completion: nil)) } @objc private func showRegisterAction(_ sender: UIAction) { @@ -332,12 +332,12 @@ extension HomeTimelineViewController { @objc private func showConfirmEmail(_ sender: UIAction) { let mastodonConfirmEmailViewModel = MastodonConfirmEmailViewModel() - coordinator.present(scene: .mastodonConfirmEmail(viewModel: mastodonConfirmEmailViewModel), from: nil, transition: .modal(animated: true, completion: nil)) + _ = coordinator.present(scene: .mastodonConfirmEmail(viewModel: mastodonConfirmEmailViewModel), from: nil, transition: .modal(animated: true, completion: nil)) } @objc private func showAccountList(_ sender: UIAction) { let accountListViewModel = AccountListViewModel(context: context, authContext: viewModel.authContext) - coordinator.present(scene: .accountList(viewModel: accountListViewModel), from: self, transition: .modal(animated: true, completion: nil)) + _ = coordinator.present(scene: .accountList(viewModel: accountListViewModel), from: self, transition: .modal(animated: true, completion: nil)) } @objc private func showProfileAction(_ sender: UIAction) { @@ -347,12 +347,12 @@ extension HomeTimelineViewController { guard let self = self else { return } guard let textField = alertController?.textFields?.first else { return } let profileViewModel = RemoteProfileViewModel(context: self.context, authContext: self.viewModel.authContext, userID: textField.text ?? "") - self.coordinator.present(scene: .profile(viewModel: profileViewModel), from: self, transition: .show) + _ = self.coordinator.present(scene: .profile(viewModel: profileViewModel), from: self, transition: .show) } alertController.addAction(showAction) let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) alertController.addAction(cancelAction) - coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) + _ = coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) } @objc private func showThreadAction(_ sender: UIAction) { @@ -362,12 +362,12 @@ extension HomeTimelineViewController { guard let self = self else { return } guard let textField = alertController?.textFields?.first else { return } let threadViewModel = RemoteThreadViewModel(context: self.context, authContext: self.viewModel.authContext, statusID: textField.text ?? "") - self.coordinator.present(scene: .thread(viewModel: threadViewModel), from: self, transition: .show) + _ = self.coordinator.present(scene: .thread(viewModel: threadViewModel), from: self, transition: .show) } alertController.addAction(showAction) let cancelAction = UIAlertAction(title: "Cancel", style: .cancel, handler: nil) alertController.addAction(cancelAction) - coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) + _ = coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) } private func showNotification(_ sender: UIAction, notificationType: Mastodon.Entity.Notification.NotificationType) { @@ -436,7 +436,7 @@ extension HomeTimelineViewController { authContext: viewModel.authContext, setting: currentSetting ) - coordinator.present( + _ = coordinator.present( scene: .settings(viewModel: settingsViewModel), from: self, transition: .modal(animated: true, completion: nil) diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift index e83101796..c7633fffa 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewController.swift @@ -388,14 +388,14 @@ extension HomeTimelineViewController { @objc private func manuallySearchButtonPressed(_ sender: UIButton) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) let searchDetailViewModel = SearchDetailViewModel(authContext: viewModel.authContext) - coordinator.present(scene: .searchDetail(viewModel: searchDetailViewModel), from: self, transition: .modal(animated: true, completion: nil)) + _ = coordinator.present(scene: .searchDetail(viewModel: searchDetailViewModel), from: self, transition: .modal(animated: true, completion: nil)) } @objc private func settingBarButtonItemPressed(_ sender: UIBarButtonItem) { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) guard let setting = context.settingService.currentSetting.value else { return } let settingsViewModel = SettingsViewModel(context: context, authContext: viewModel.authContext, setting: setting) - coordinator.present(scene: .settings(viewModel: settingsViewModel), from: self, transition: .modal(animated: true, completion: nil)) + _ = coordinator.present(scene: .settings(viewModel: settingsViewModel), from: self, transition: .modal(animated: true, completion: nil)) } @objc private func refreshControlValueChanged(_ sender: RefreshControl) { diff --git a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadLatestState.swift b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadLatestState.swift index 41cea6b58..8bf1421b1 100644 --- a/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadLatestState.swift +++ b/Mastodon/Scene/HomeTimeline/HomeTimelineViewModel+LoadLatestState.swift @@ -62,7 +62,7 @@ extension HomeTimelineViewModel.LoadLatestState { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let viewModel else { return } let latestFeedRecords = viewModel.fetchedResultsController.records.prefix(APIService.onceRequestStatusMaxCount) let parentManagedObjectContext = viewModel.fetchedResultsController.fetchedResultsController.managedObjectContext diff --git a/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift b/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift index c6552bcba..7f80bfe3c 100644 --- a/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift +++ b/Mastodon/Scene/MediaPreview/MediaPreviewViewController.swift @@ -276,7 +276,7 @@ extension MediaPreviewViewController: MediaPreviewImageViewControllerDelegate { title: L10n.Common.Alerts.SavePhotoFailure.title, message: L10n.Common.Alerts.SavePhotoFailure.message ) - self.coordinator.present( + _ = self.coordinator.present( scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil) diff --git a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift index a90da1e81..ae8a4933e 100644 --- a/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift +++ b/Mastodon/Scene/Onboarding/ConfirmEmail/MastodonConfirmEmailViewController.swift @@ -189,7 +189,7 @@ extension MastodonConfirmEmailViewController { alertController.addAction(openEmailAction) alertController.addAction(cancelAction) alertController.preferredAction = openEmailAction - self.coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) + _ = self.coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) } @objc private func resendButtonPressed(_ sender: UIButton) { @@ -197,18 +197,17 @@ extension MastodonConfirmEmailViewController { let resendAction = UIAlertAction(title: L10n.Scene.ConfirmEmail.DontReceiveEmail.resendEmail, style: .default) { _ in let url = Mastodon.API.resendEmailURL(domain: self.viewModel.authenticateInfo.domain) let viewModel = MastodonResendEmailViewModel(resendEmailURL: url, email: self.viewModel.email) - self.coordinator.present(scene: .mastodonResendEmail(viewModel: viewModel), from: self, transition: .modal(animated: true, completion: nil)) + _ = self.coordinator.present(scene: .mastodonResendEmail(viewModel: viewModel), from: self, transition: .modal(animated: true, completion: nil)) } let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default) { _ in } alertController.addAction(resendAction) alertController.addAction(okAction) - self.coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) + _ = self.coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) } func showEmailAppAlert() { let clients = ThirdPartyMailClient.clients - let application = UIApplication.shared let availableClients = clients.filter { client -> Bool in ThirdPartyMailer.isMailClientAvailable(client) } @@ -220,14 +219,14 @@ extension MastodonConfirmEmailViewController { alertController.addAction(alertAction) _ = availableClients.compactMap { client -> UIAlertAction in let alertAction = UIAlertAction(title: client.name, style: .default) { _ in - _ = ThirdPartyMailer.open(client, completionHandler: nil) + ThirdPartyMailer.open(client, completionHandler: nil) } alertController.addAction(alertAction) return alertAction } let cancelAction = UIAlertAction(title: L10n.Common.Controls.Actions.cancel, style: .cancel, handler: nil) alertController.addAction(cancelAction) - self.coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) + _ = self.coordinator.present(scene: .alertController(alertController: alertController), from: self, transition: .alertController(animated: true, completion: nil)) } } diff --git a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift index 9260f9e21..81924d812 100644 --- a/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift +++ b/Mastodon/Scene/Onboarding/Register/MastodonRegisterViewController+Avatar.swift @@ -49,7 +49,7 @@ extension MastodonRegisterViewController: PHPickerViewControllerDelegate { let alertController = UIAlertController(for: error, title: "", preferredStyle: .alert) let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil) alertController.addAction(okAction) - self.coordinator.present( + _ = self.coordinator.present( scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil) diff --git a/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+State.swift b/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+State.swift index 803a9d45e..c2dc27201 100644 --- a/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+State.swift +++ b/Mastodon/Scene/Profile/Favorite/FavoriteViewModel+State.swift @@ -46,7 +46,7 @@ extension FavoriteViewModel { extension FavoriteViewModel.State { class Initial: FavoriteViewModel.State { override func isValidNextState(_ stateClass: AnyClass) -> Bool { - guard let viewModel = viewModel else { return false } + guard viewModel != nil else { return false } switch stateClass { case is Reloading.Type: return true @@ -130,13 +130,12 @@ extension FavoriteViewModel.State { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let viewModel else { return } if previousState is Reloading { maxID = nil } - Task { do { let response = try await viewModel.context.apiService.favoritedStatuses( diff --git a/Mastodon/Scene/Profile/ProfileViewController.swift b/Mastodon/Scene/Profile/ProfileViewController.swift index d9e56630f..4b3cd5b20 100644 --- a/Mastodon/Scene/Profile/ProfileViewController.swift +++ b/Mastodon/Scene/Profile/ProfileViewController.swift @@ -503,7 +503,7 @@ extension ProfileViewController { os_log(.info, log: .debug, "%{public}s[%{public}ld], %{public}s", ((#file as NSString).lastPathComponent), #line, #function) guard let setting = context.settingService.currentSetting.value else { return } let settingsViewModel = SettingsViewModel(context: context, authContext: viewModel.authContext, setting: setting) - coordinator.present(scene: .settings(viewModel: settingsViewModel), from: self, transition: .modal(animated: true, completion: nil)) + _ = coordinator.present(scene: .settings(viewModel: settingsViewModel), from: self, transition: .modal(animated: true, completion: nil)) } @objc private func shareBarButtonItemPressed(_ sender: UIBarButtonItem) { diff --git a/Mastodon/Scene/Profile/UserLIst/UserListViewModel+State.swift b/Mastodon/Scene/Profile/UserLIst/UserListViewModel+State.swift index c7b3e20cd..d0f7feb88 100644 --- a/Mastodon/Scene/Profile/UserLIst/UserListViewModel+State.swift +++ b/Mastodon/Scene/Profile/UserLIst/UserListViewModel+State.swift @@ -134,7 +134,7 @@ extension UserListViewModel.State { maxID = nil } - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let viewModel = viewModel else { return } let maxID = self.maxID diff --git a/Mastodon/Scene/Report/Report/ReportViewController.swift b/Mastodon/Scene/Report/Report/ReportViewController.swift index f1418c5a1..793f07b2e 100644 --- a/Mastodon/Scene/Report/Report/ReportViewController.swift +++ b/Mastodon/Scene/Report/Report/ReportViewController.swift @@ -126,7 +126,7 @@ extension ReportViewController: ReportServerRulesViewControllerDelegate { return } - coordinator.present( + _ = coordinator.present( scene: .reportStatus(viewModel: viewModel.reportStatusViewModel), from: self, transition: .show diff --git a/Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel+State.swift b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel+State.swift index 01e8715d1..79807cf0f 100644 --- a/Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel+State.swift +++ b/Mastodon/Scene/Report/ReportStatus/ReportStatusViewModel+State.swift @@ -75,7 +75,7 @@ extension ReportStatusViewModel.State { override func didEnter(from previousState: GKState?) { super.didEnter(from: previousState) - guard let viewModel = viewModel, let stateMachine = stateMachine else { return } + guard let viewModel else { return } let maxID = viewModel.statusFetchedResultsController.statusIDs.last diff --git a/Mastodon/Scene/Root/MainTab/MainTabBarController.swift b/Mastodon/Scene/Root/MainTab/MainTabBarController.swift index 48d974358..df0c66fab 100644 --- a/Mastodon/Scene/Root/MainTab/MainTabBarController.swift +++ b/Mastodon/Scene/Root/MainTab/MainTabBarController.swift @@ -218,7 +218,7 @@ extension MainTabBarController { let alertController = UIAlertController(for: error, title: nil, preferredStyle: .alert) let okAction = UIAlertAction(title: "OK", style: .default, handler: nil) alertController.addAction(okAction) - coordinator.present( + _ = coordinator.present( scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil) diff --git a/Mastodon/Scene/Search/Search/SearchViewController.swift b/Mastodon/Scene/Search/Search/SearchViewController.swift index 581fa08b3..d5ac8e6bf 100644 --- a/Mastodon/Scene/Search/Search/SearchViewController.swift +++ b/Mastodon/Scene/Search/Search/SearchViewController.swift @@ -174,7 +174,7 @@ extension SearchViewController { // FIXME: // use `.customPush(animated: false)` false to disable navigation bar animation for searchBar layout // but that should be a fade transition whe fixed size searchBar - self.coordinator.present(scene: .searchDetail(viewModel: searchDetailViewModel), from: self, transition: .customPush(animated: false)) + _ = self.coordinator.present(scene: .searchDetail(viewModel: searchDetailViewModel), from: self, transition: .customPush(animated: false)) } .store(in: &disposeBag) } diff --git a/Mastodon/Scene/Settings/SettingsViewController.swift b/Mastodon/Scene/Settings/SettingsViewController.swift index 53a856fd0..fc42968d4 100644 --- a/Mastodon/Scene/Settings/SettingsViewController.swift +++ b/Mastodon/Scene/Settings/SettingsViewController.swift @@ -401,7 +401,7 @@ extension SettingsViewController: UITableViewDelegate { ) let okAction = UIAlertAction(title: L10n.Common.Controls.Actions.ok, style: .default, handler: nil) alertController.addAction(okAction) - self.coordinator.present(scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil)) + _ = self.coordinator.present(scene: .alertController(alertController: alertController), from: nil, transition: .alertController(animated: true, completion: nil)) } .store(in: &disposeBag) case .signOut: @@ -549,7 +549,7 @@ extension SettingsViewController: MetaLabelDelegate { switch meta { case .url(_, _, let url, _): guard let url = URL(string: url) else { return } - coordinator.present(scene: .safari(url: url), from: self, transition: .safariPresent(animated: true, completion: nil)) + _ = coordinator.present(scene: .safari(url: url), from: self, transition: .safariPresent(animated: true, completion: nil)) default: assertionFailure() } diff --git a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift index 13c8311c7..7eacdc205 100644 --- a/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift +++ b/Mastodon/Scene/SuggestionAccount/SuggestionAccountViewController.swift @@ -161,7 +161,7 @@ extension SuggestionAccountViewController: UITableViewDelegate { case .account(let record): guard let account = record.object(in: context.managedObjectContext) else { return } let cachedProfileViewModel = CachedProfileViewModel(context: context, authContext: viewModel.authContext, mastodonUser: account) - coordinator.present( + _ = coordinator.present( scene: .profile(viewModel: cachedProfileViewModel), from: self, transition: .show diff --git a/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift b/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift index 5381feb0d..8219859a2 100644 --- a/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift +++ b/Mastodon/Scene/Transition/MediaPreview/MediaHostToMediaPreviewViewControllerAnimatedTransitioning.swift @@ -263,7 +263,7 @@ extension MediaHostToMediaPreviewViewControllerAnimatedTransitioning { }() // FIXME: - let maskLayerToFinalPath = maskLayerToFinalRect.flatMap { UIBezierPath(rect: $0) }?.cgPath + _ = maskLayerToFinalRect.flatMap { UIBezierPath(rect: $0) }?.cgPath if let maskLayerToPath = maskLayerToPath { maskLayer.path = maskLayerToPath diff --git a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/Attachment/AttachmentViewModel+Compress.swift b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/Attachment/AttachmentViewModel+Compress.swift index ac1811a06..e5d6702ad 100644 --- a/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/Attachment/AttachmentViewModel+Compress.swift +++ b/MastodonSDK/Sources/MastodonUI/Scene/ComposeContent/Attachment/AttachmentViewModel+Compress.swift @@ -17,7 +17,7 @@ extension AttachmentViewModel { let exporter = NextLevelSessionExporter(withAsset: urlAsset) exporter.outputFileType = .mp4 - var isLandscape: Bool = { + let isLandscape: Bool = { guard let track = urlAsset.tracks(withMediaType: .video).first else { return true } diff --git a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift index d7ba51e17..7c751d756 100644 --- a/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift +++ b/MastodonSDK/Sources/MastodonUI/View/Content/NotificationView+ViewModel.swift @@ -105,7 +105,6 @@ extension NotificationView.ViewModel { timestampUpdatePublisher.prepend(Date()).eraseToAnyPublisher() ) .sink { [weak self] timestamp, _ in - guard let self = self else { return } guard let timestamp = timestamp else { notificationView.dateLabel.configure(content: PlaintextMetaContent(string: "")) return