3

我想创建一个简单的自定义加载栏,它由我拥有的两张图像组成:一张用于纯色背景,一张用于对角线。我是 iOS 新手,所以我的方法是创建一个自定义 UIView,它使用两个 UIImageView,每个图像一个,并带有一个动画块,用于从左到右移动对角线图像。

我采用这种方法是因为我已经熟悉 UIImageViews 和动画块。我的问题是...

  1. 你会建议一个更好的方法吗?我完全不熟悉层,并且由于时间限制,现在不想阅读它们,但如果它能够提供更好的实现,我愿意这样做。
  2. 我怎样才能“圆”加载条的末端?以我目前的方法,这就是我要得到的......

在此处输入图像描述

非常感谢你的智慧!

4

4 回答 4

3

看看WNProgressView,它可能会满足您的需求。

于 2012-11-14T18:16:15.593 回答
2

您可以使用以下两种方式实现此目的:

1-将此类导入您的代码 #import <QuartzCore/QuartzCore.h>

然后将以下两行添加到-(void)viewDidLoad方法中,以便在加载视图时栏将被舍入,或者您可以将其添加到您希望栏开始对其进行舍入的位置。

barImageView.layer.cornerRadius = 10.0f;
barImageView.layer.masksToBounds = YES;

2-另一种方法是使用以下代码:

-(void)roundCorners:(UIRectCorner)rectCorner forView:(UIView*)view
{
    UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds 
                                                   byRoundingCorners:rectCorner
                                                         cornerRadii:CGSizeMake(20.0, 20.0)];
    // Create the shape layer and set its path
    CAShapeLayer *maskLayer = [CAShapeLayer layer];
    maskLayer.frame = view.bounds;
    maskLayer.path = maskPath.CGPath;
    
    // Set the newly created shape layer as the mask for the image view's layer
    view.layer.mask = maskLayer;
}

添加以下行和 viewDidLoad 或您要开始舍入栏的位置

[self roundCorners:UIRectCornerTopRight|UIRectCornerTopLeft|UIRectCornerBottomRight|UIRectCornerBottomLeft forView:[self.view.subviews objectAtIndex:0] withAngle:10];
于 2012-11-15T17:05:01.933 回答
1

Have your 'solid colored background' view be a container view for the 'diagonals' imageView. (diagonals is a subview of background)

Then set 'clipsToBounds' = YES on the diagonals subview and re-adjust the frame as necessary. (Assuming your diagonals imageView represents 100% progress)

If your loading bar imageView doesn't have rounded corners you can just use CALayer's cornerRadius property.

imageView.layer.cornerRadius = 6.0f;
于 2012-11-14T18:12:28.740 回答
0

作为 iOS 新手,使用 UIProgressView 可能会更好。它可能看起来不那么好,但它具有相同的目的并且会更容易。还有一个 UIActivityIndi​​catorView,它是一个像齿轮一样旋转的圆圈。两者都比自定义解决方案更易于使用。

参考:http: //developer.apple.com/library/ios/#documentation/uikit/reference/UIProgressView_Class/Reference/Reference.html

http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIActivityIndi​​catorView_Class/Reference/UIActivityIndi​​catorView.html

于 2012-11-14T18:10:29.360 回答