我从MVVM开始,以便将逻辑代码从视图中分离出来.但我有点担心在点击发出请求的按钮时将progressHUD相关代码放在哪里.
之前,我曾经这样做过:
//Before
@IBAction func startRequestTapped() {
SVProgressHUD.show()
self.apiClient.requestObservable().subscribe(onError: { (error) in
SVProgressHUD.hide()
}, onCompleted: {
SVProgressHUD.hide()
})
}
Run Code Online (Sandbox Code Playgroud)
但是当我使用mvvm时,我确实喜欢这样:
//In the viewModel
public var validateButtonDidTap = PublishSubject<Void>()
init() {
validateButtonDidTap.flatMap { (_)
return self.apiClient.requestObservable()
}
}
// In the viewController
viewDidLoad() {
let tap = self.validateButton.rx.tap
tap.bindTo(self.viewModel.validateButtonDidTap)
}
Run Code Online (Sandbox Code Playgroud)
其中,我不知道将ProgressHUD隐藏或显示放在哪里.
我想在我的 theos 逆向工程项目中使用 SVProgressHUD(无论是 .a 还是 .framework)。
我试图将标题放在 /opt/theos/inlcude 中,并将 .framework 文件放在 /op/theos/lib 中
并在 makefile 文件中添加 EXTRA_FRAMEWORK += SVProgressHUD。
它可以毫无问题地编译。但它以某种方式不起作用。
任何的想法?
我刚刚下载了SVProgressHUD并将其合并到我的项目中,如github文档页面中所述,但即使我写出来[SVProgressHUD showWithMaskType:SVProgressHUDMaskTypeGradient];
,它与默认的掩码类型没有区别,当我在光标旋转时点击屏幕时我得到了我的应用程序崩溃 - 意味着我无法禁用用户交互功能,因为我的应用程序在显示所有表视图单元格之前崩溃.
请注意,clear
或black
掩码类型也不起作用.
那么如何才能成功禁用用户交互?和文件中AppDelegate.m
的applicationDidFinishWithLaunchingOptions:
和FirstViewController.
的viewDidLoad:
,我应该写上面的代码?
我使用的是最新版本,SVProgressHUD
并使用Xcode 5.1和iOS 7.1.我也用ARC.我错过了什么吗?
这是一个bug问题,它已在当前版本中得到解决.在Github页面上查看更多信息.
我现在将此问题发布了更多次,但我还没有解决我的问题。在我的情况下,foregroundColor无法正常工作。即使深浅色未选择任何颜色,环也不会显示为深灰色。请查看我的代码并为我提供帮助。谢谢
import SVProgressHUD
//import SVProgressHud on top
SVProgressHUD.setDefaultStyle(.custom)
SVProgressHUD.setDefaultMaskType(.custom)
SVProgressHUD.setMinimumSize(CGSize(width: 60, height: 60))
SVProgressHUD.setRingThickness(3)
SVProgressHUD.setRingNoTextRadius(20)
SVProgressHUD.setBackgroundColor(UIColor.white)
SVProgressHUD.setForegroundColor(UIColor.darkGray)
SVProgressHUD.show()
Run Code Online (Sandbox Code Playgroud)
我需要在SVProgressHUD中添加一个UITapGestureRecognizer.SVProgressHUD已经能够解雇使用-(void) dismiss;
.此代码将根据秒数关闭动画.
- (void)dismiss {
for (UIGestureRecognizer *gesture in [[[self class] sharedView] gestureRecognizers]) {
[[[self class] sharedView] removeGestureRecognizer:gesture];
}
NSDictionary *userInfo = [self notificationUserInfo];
[[NSNotificationCenter defaultCenter] postNotificationName:SVProgressHUDWillDisappearNotification
object:nil
userInfo:userInfo];
self.activityCount = 0;
[UIView animateWithDuration:0.15
delay:0
options:UIViewAnimationCurveEaseIn | UIViewAnimationOptionAllowUserInteraction
animations:^{
self.hudView.transform = CGAffineTransformScale(self.hudView.transform, 0.8, 0.8);
if(self.isClear) // handle iOS 7 UIToolbar not answer well to hierarchy opacity change
self.hudView.alpha = 0;
else
self.alpha = 0;
}
completion:^(BOOL finished){
if(self.alpha == 0 || self.hudView.alpha == 0) …
Run Code Online (Sandbox Code Playgroud) 我有 2 个项目,都是在 iOS 13 中开发的,其中一个项目 SVProgressHUD 工作正常,即在屏幕中心正确显示,但在另一个应用程序中,它显示在屏幕的左上角。
我搜索过,发现这个问题与几个用户在 ios 13 中开发有关。但对我来说,在一个项目中很好,在另一个项目中是错误的。我相信它有一个单独的问题,我不知道!
以下是两个应用程序附带的进度图片:
正确的外观:(中心)
错误的外观:(左上)
ps 无论我选择哪种设备,一个应用程序的行为都很好,而其他应用程序的行为则不同!!
我正在使用第三部分UIActivityIndicator SVProgressHUD,当我的视图加载时,我正在进行这项工作.我希望延迟activityIndicator大约1秒,同时我的应用程序中的一些事情发生.然后调用[SVProgressHUD dismiss]; 基于1秒等待......但我不知道该怎么做.
目前这是我的代码在viewdidload中的样子
[SVProgressHUD showWithMaskType:SVProgressHUDMaskTypeBlack];
[SVProgressHUD setStatus:@"loading..."];
[SVProgressHUD dismiss];
Run Code Online (Sandbox Code Playgroud)
我知道有一个dismisswithsucsess:计时器..但这似乎延迟了我不想要的成功消息出现的时间..我想延迟指标,没有文字..但只是想不到一种方法.
我试过了
sleep(1); //which dosnt work
Run Code Online (Sandbox Code Playgroud)
我也试过了
//[SVProgressHUD performSelector:@selector(stopAnimating) withObject:nil afterDelay:0];
Run Code Online (Sandbox Code Playgroud)
并把[SVProgressHUD解雇]; 在stopAnimating方法中,但是因为看起来所有的调用都需要在同一个方法中.
我正在尝试实现SVProgressHUD进度活动指标.我从[demo]中复制了这个类.1
我的应用加载但活动指示器未显示.这是我第一次尝试使用其中之一,所以任何帮助将不胜感激.
这是代码:
#import "SVProgressHUD.h"
@implementation QuotesAppDelegate
- (void)startLoading
{
//call this in your app delegate instead of setting window.rootViewController to your main view controller
//you can show a UIActivityIndiocatorView here or something if you like
[SVProgressHUD show];
[self performSelectorInBackground:@selector(loadInBackground) withObject:nil];
}
- (void)loadInBackground
{
//do your loading here
//this is in the background, so don't try to access any UI elements
[self populateFromDatabase];
[SVProgressHUD dismiss];
[self performSelectorOnMainThread:@selector(finishedLoading) withObject:nil waitUntilDone:NO];
}
- (void)finishedLoading
{
//back on the main thread …
Run Code Online (Sandbox Code Playgroud) 我想SVProgressHUD
在登录过程中显示.但是SVProgressHUD
登录后仍然等待.它~15seconds
在"登录成功"消息后被解雇.这是我的代码:
[SVProgressHUD show];
__block BOOL result;
dispatch_async(queue, ^{
result = [self autanticate];
NSLog(@"autantication result = %d", result);
result = [self getCSRFToken];
NSLog(@"Login success result = %d", result);
[SVProgressHUD dismiss];
});
Run Code Online (Sandbox Code Playgroud)
autanticate
和getCSRFToken
功能如下:
- (BOOL) getCSRFToken
{
__block BOOL success = false;
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
// Make sure that the callbacks are not called from the main queue, otherwise we would deadlock
manager.requestSerializer = [AFJSONRequestSerializer serializer];
manager.responseSerializer = [AFHTTPResponseSerializer serializer];
NSDictionary …
Run Code Online (Sandbox Code Playgroud) 我UIWebView
有一套作为视图ViewController
。我想SVProgressHUD
在网页加载时显示活动指示器,然后在完成时将其关闭,但似乎无法正常工作。网页加载正常,但是该指示器从不显示。我知道SVProgressHUD
设置正确且功能正确,但我所拥有的功能却不正确。
我相信,因为我UIWebView
实际上没有在IB的场景中,而是ViewController
将视图设置为UIWebView
,我正在使用的代码无法将其定位。如果我错了,请纠正我。
这是我的代码:
import UIKit
import SVProgressHUD
class ViewController: UIViewController, UIWebViewDelegate {
override func viewDidLoad() {
super.viewDidLoad()
if let url = URL(string: "https://www.google.com") {
let webView = UIWebView(frame: self.view.frame)
let urlRequest = URLRequest(url: url)
webView.loadRequest(urlRequest as URLRequest)
webView.scalesPageToFit = true;
webView.scrollView.showsHorizontalScrollIndicator = false;
webView.scrollView.showsVerticalScrollIndicator = false;
self.view.addSubview(webView)
}
}
func webViewDidStartLoad(_ webView: UIWebView) {
SVProgressHUD.show()
}
func webViewDidFinishLoad(_ webView: UIWebView) {
SVProgressHUD.dismiss()
}
func webView(_ webView: …
Run Code Online (Sandbox Code Playgroud)