1、直接上代碼:
unsigned int count = 0;
Ivar *members = class_copyIvarList([UIPageControl class], &count);
for (int i = 0; i < count; i++)
{
Ivar var = members[i];
const char *memberAddress = ivar_getName(var);
const char *memberType = ivar_getTypeEncoding(var);
NSLog(@"address = %s ; type = %s",memberAddress,memberType);
}
log:
address = _lastUserInterfaceIdiom ; type = q
address = _indicators ; type = @"NSMutableArray"
address = _currentPage ; type = q
address = _displayedPage ; type = q
address = _pageControlFlags ; type = {?="hideForSinglePage"b1"defersCurrentPageDisplay"b1}
address = _currentPageImage ; type = @"UIImage"
address = _pageImage ; type = @"UIImage"
address = _currentPageImages ; type = @"NSMutableArray"
address = _pageImages ; type = @"NSMutableArray"
address = _backgroundVisualEffectView ; type = @"UIVisualEffectView"
address = _currentPageIndicatorTintColor ; type = @"UIColor"
address = _pageIndicatorTintColor ; type = @"UIColor"
address = _legibilitySettings ; type = @"_UILegibilitySettings"
address = _numberOfPages ; type = q
2、簡單的應(yīng)用場景:
獲取UIPageControl的屬性,然后修改小原點的的圖片,kvc+runtime。這樣比較方便,當(dāng)然自定義UIPageControl也是可以的。
UIImage *image = [UIImage imageNamed:@"line1"];
UIImage *image2 = [UIImage imageNamed:@"line2"];
UIPageControl *pageControl = [[UIPageControl alloc] initWithFrame:CGRectMake(0, 100, 400, 20)];
pageControl.numberOfPages = 5;
pageControl.currentPage = 0;
[pageControl setValue:image forKey:@"_pageImage"];
[pageControl setValue:image2 forKey:@"_currentPageImage"];
[self.view addSubview:pageControl];
效果:

image.png

image.png