GrayPageControl 在 IOS7 崩溃解决方案

来源:互联网 发布:广州多益网络老板 编辑:程序博客网 时间:2024/06/04 17:54

网上开源的GrayPageControl 在ios7下会崩溃,因为ios7修改了UIPageControl内部的实现


stackoverflow 中改出解决方案 注意修改红体字部分



#import "GrayPageControl.h"

@implementation GrayPageControl

-(id) initWithCoder:(NSCoder *)aDecoder

{

    self = [super initWithCoder:aDecoder];

    activeImage = [UIImageimageNamed:@"inactive_page_image"];

    inactiveImage = [UIImageimageNamed:@"active_page_image"];

    [selfsetCurrentPage:1];

    return self;

}


- (id)initWithFrame:(CGRect)aFrame {

    

if (self = [superinitWithFrame:aFrame]) {

        activeImage = [UIImageimageNamed:@"inactive_page_image"];

        inactiveImage = [UIImageimageNamed:@"active_page_image"];

        [selfsetCurrentPage:1];

}

return self;

}


-(void) updateDots

{

    for (int i =0; i < [self.subviewscount]; i++)

    {

        UIView* dotView = [self.subviewsobjectAtIndex:i];

        UIImageView* dot =nil;

        

        for (UIView* subviewin dotView.subviews)

        {

            if ([subviewisKindOfClass:[UIImageView class]])

            {

                dot = (UIImageView*)subview;

                break;

            }

        }

        

        if (dot ==nil)

        {

            dot = [[UIImageView alloc] initWithFrame:CGRectMake(0.0f,0.0f, dotView.frame.size.width, dotView.frame.size.height)];

            [dotView addSubview:dot];

        }

        

        if (i ==self.currentPage)

        {

            if(activeImage)

                dot.image = activeImage;

        }

        else

        {

            if (inactiveImage)

                dot.image = inactiveImage;

        }

    }

}


-(void) setCurrentPage:(NSInteger)page

{

    [super setCurrentPage:page];

    [self updateDots];

}


具体请参考 http://stackoverflow.com/questions/18975544/uipagecontrol-is-not-with-uiimageview-in-ios7

0 0