単純な正方形の背景を持つアクティビティ インジケーターを作成する方法は知っていますが、パディングがまったくなく、「読み込み中」という単語をこのように表示する方法がわかりません。
これがどのように達成されるか知っている人はいますか?オンラインで調べましたが、何も見つからないようです。皆さん、ありがとうございました!
単純な正方形の背景を持つアクティビティ インジケーターを作成する方法は知っていますが、パディングがまったくなく、「読み込み中」という単語をこのように表示する方法がわかりません。
これがどのように達成されるか知っている人はいますか?オンラインで調べましたが、何も見つからないようです。皆さん、ありがとうございました!
カスタム コンポーネントを使用する場合は、MBProgressHUDを使用できます。これがそのソースコードです。
自分で作成したい場合は、ソースコードをチェックして、これがどのように実装されているかを確認し、コードに対して同様のアプローチに従うことができます. UIView
基本的には、メソッドでアクティビティ インジケーターとラベルをサブクラス化して描画する必要がありdrawRect
ます。
黒の背景はUIImageView
. したがって、これを表示したいviewControllerで:
[self.view UIImageView]; //Set proper frame for the UIImageView so that it comes in the centre.
その画像ビューに、アクティビティ インジケーターと「読み込み中」というラベルを追加します。
これはあなたが望むものを与えると思います。:)
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
switch (self.maskType) {
case SVProgressHUDMaskTypeBlack: {
[[UIColor colorWithWhite:0 alpha:0.5] set];
CGContextFillRect(context, self.bounds);
break;
}
case SVProgressHUDMaskTypeGradient: {
size_t locationsCount = 2;
CGFloat locations[2] = {0.0f, 1.0f};
CGFloat colors[8] = {0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.75f};
CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
CGGradientRef gradient = CGGradientCreateWithColorComponents(colorSpace, colors, locations, locationsCount);
CGColorSpaceRelease(colorSpace);
CGPoint center = CGPointMake(self.bounds.size.width / 2, self.bounds.size.height / 2);
float radius = MIN(self.bounds.size.width, self.bounds.size.height) ;
CGContextDrawRadialGradient(context, gradient, center, 0, center, radius, kCGGradientDrawsAfterEndLocation);
CGGradientRelease(gradient);
break;
}
}
}
+ (void)showWithStatus:(NSString *)status {
[SVProgressHUD showWithStatus:status networkIndicator:SVProgressHUDShowNetworkIndicator];
}
+ (void)showInView:(UIView *)view status:(NSString *)string {
[SVProgressHUD showWithStatus:string maskType:SVProgressHUDMaskTypeNone networkIndicator:SVProgressHUDShowNetworkIndicator];
}
- (void)showWithStatus:(NSString *)string maskType:(SVProgressHUDMaskType)hudMaskType networkIndicator:(BOOL)show {
self.fadeOutTimer = nil;
if (self.showNetworkIndicator)
[UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
self.showNetworkIndicator = show;
if (self.showNetworkIndicator)
[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;
self.imageView.hidden = YES;
self.maskType = hudMaskType;
[self setStatus:string];
[self.spinnerView startAnimating];
if (self.maskType != SVProgressHUDMaskTypeNone) {
self.overlayWindow.userInteractionEnabled = YES;
} else {
self.overlayWindow.userInteractionEnabled = NO;
}
[self.overlayWindow makeKeyAndVisible];
[self positionHUD:nil];
if (self.alpha != 1) {
[self registerNotifications];
self.hudView.transform = CGAffineTransformScale(self.hudView.transform, 1.3, 1.3);
[UIView animateWithDuration:0.15
delay:0
options:UIViewAnimationOptionAllowUserInteraction | UIViewAnimationCurveEaseOut | UIViewAnimationOptionBeginFromCurrentState
animations:^{
self.hudView.transform = CGAffineTransformScale(self.hudView.transform, 1 / 1.3, 1 / 1.3);
self.alpha = 1;
}
completion:NULL];
}
[self setNeedsDisplay];
}