创建具有圆边的自定义加载栏

时间:2012-11-14 18:06:23

标签: iphone ios ipad

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

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

  1. 您会建议更好的方法吗?我对层不熟悉,并且由于时间限制,现在不想阅读它们,但我愿意,如果它能提供更好的实现。
  2. 如何“围绕”装载栏的两端?按照我目前的方法,这就是我要得到的......
  3. enter image description here

    非常感谢你的智慧!

4 个答案:

答案 0 :(得分:3)

看看WNProgressView,它可能会做你需要的。

答案 1 :(得分: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];

答案 2 :(得分:1)

让“纯色背景”视图成为“对角线”imageView的容器视图。 (对角线是背景的子视图)

然后在对角线子视图上设置'clipsToBounds'= YES,并根据需要重新调整框架。 (假设您的对角线imageView代表100%进展)

如果您的加载栏imageView没有圆角,您可以使用CALayer的cornerRadius属性。

imageView.layer.cornerRadius = 6.0f;

答案 3 :(得分: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/UIActivityIndicatorView_Class/Reference/UIActivityIndicatorView.html