Files
iOS/Sources/App/WebView/CustomRefreshControl.swift
Bruno Pantaleão Gonçalves 3cb3e93fdc Use HAProgressView instead of standard as refresh control (#3612)
<!-- Thank you for submitting a Pull Request and helping to improve Home
Assistant. Please complete the following sections to help the processing
and review of your changes. Please do not delete anything from this
template. -->

## Summary
<!-- Provide a brief summary of the changes you have made and most
importantly what they aim to achieve -->

## Screenshots
<!-- If this is a user-facing change not in the frontend, please include
screenshots in light and dark mode. -->
![CleanShot 2025-05-22 at 16 41
22@2x](https://github.com/user-attachments/assets/548f3cd0-b5bc-4d95-a244-e9d60302f02a)

## Link to pull request in Documentation repository
<!-- Pull requests that add, change or remove functionality must have a
corresponding pull request in the Companion App Documentation repository
(https://github.com/home-assistant/companion.home-assistant). Please add
the number of this pull request after the "#" -->
Documentation: home-assistant/companion.home-assistant#

## Any other notes
<!-- If there is any other information of note, like if this Pull
Request is part of a bigger change, please include it here. -->

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-05-22 17:23:34 +02:00

36 lines
1.2 KiB
Swift

import Shared
import SwiftUI
import UIKit
class CustomRefreshControl: UIRefreshControl {
private var hostingController: UIHostingController<HAProgressView>?
private let height: CGFloat = 60
override init() {
super.init()
setupCustomSpinner()
}
required init?(coder: NSCoder) {
super.init(coder: coder)
setupCustomSpinner()
}
private func setupCustomSpinner() {
let spinner = HAProgressView(style: .refreshControl)
let hostingController = UIHostingController(rootView: spinner)
hostingController.view.backgroundColor = .clear
hostingController.view.translatesAutoresizingMaskIntoConstraints = false
addSubview(hostingController.view)
NSLayoutConstraint.activate([
hostingController.view.centerYAnchor.constraint(equalTo: centerYAnchor),
hostingController.view.leadingAnchor.constraint(equalTo: leadingAnchor),
hostingController.view.trailingAnchor.constraint(equalTo: trailingAnchor),
hostingController.view.heightAnchor.constraint(equalToConstant: height),
])
tintColor = .clear // Hide default spinner
self.hostingController = hostingController
}
}