iOS隐式转换';int';至';UIColor*';不允许使用ARC
我有一个pickerview,它从一个单独的AFPickerView文件获取信息。我得到一个错误“ARC不允许将'int'隐式转换为'UIColor*”。有什么简单的解决方法吗 以下是其影响的代码:iOS隐式转换';int';至';UIColor*';不允许使用ARC,ios,uipickerview,textcolor,Ios,Uipickerview,Textcolor,我有一个pickerview,它从一个单独的AFPickerView文件获取信息。我得到一个错误“ARC不允许将'int'隐式转换为'UIColor*”。有什么简单的解决方法吗 以下是其影响的代码: [visibleViews minusSet:recycledViews]; // add missing pages for (int index = firstNeededViewIndex; index <= lastNeededViewIndex; index++)
[visibleViews minusSet:recycledViews];
// add missing pages
for (int index = firstNeededViewIndex; index <= lastNeededViewIndex; index++)
{
if (![self isDisplayingViewForIndex:index])
{
UILabel *label = (UILabel *)[self dequeueRecycledView];
if (label == nil)
{
label = [[UILabel alloc] initWithFrame:CGRectMake(_rowIndent, 0, self.frame.size.width - _rowIndent, 39.0)];
label.backgroundColor = [UIColor clearColor];
label.font = self.rowFont;
label.textColor = RGBACOLOR(0.0, 0.0, 0.0, 0.75);
}
[self configureView:label atIndex:index];
[contentView addSubview:label];
[visibleViews addObject:label];
}
}
}
[visibleViews minusSet:recycledViews];
//添加缺少的页面
for(int index=firstneedViewIndex;index=rowsCount)
回来
currentRow=selectedRow;
[contentView setContentOffset:CGPointMake(0.0,39.0*currentRow)动画:否];
}
-(无效)setRowFont:(UIFont*)rowFont
{
_rowFont=rowFont;
用于(可视视图中的UILabel*aLabel)
{
aLabel.font=_rowFont;
}
用于(回收视图中的UILabel*aLabel)
{
aLabel.font=_rowFont;
}
}
-(void)setRowIndent:(CGFloat)rowIndent
{
_行缩进=行缩进;
用于(可视视图中的UILabel*aLabel)
{
CGRect frame=aLabel.frame;
frame.origin.x=\u行缩进;
frame.size.width=self.frame.size.width-\u行缩进;
aLabel.frame=框架;
}
用于(回收视图中的UILabel*aLabel)
{
CGRect frame=aLabel.frame;
frame.origin.x=\u行缩进;
frame.size.width=self.frame.size.width-\u行缩进;
aLabel.frame=框架;
}
}
#pragma标记-初始化
-(id)initWithFrame:(CGRect)帧
{
self=[super initWithFrame:frame];
如果(自我)
{
//设置
[自我设置];
//背景
UIImageView*bacground=[[UIImageView alloc]initWithImage:[UIImageName:@“pickerBackground.png”];
[自添加子视图:bacground];
//内容
contentView=[[UIScrollView alloc]initWithFrame:CGRectMake(0.0,0.0,frame.size.width,frame.size.height)];
contentView.showshorizontalscrolindicator=否;
contentView.showsVerticalScrollIndicator=否;
contentView.delegate=self;
[自添加子视图:contentView];
UITapGestureRecognizer*tapRecognizer=[[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(didTap:)];
[contentView AddGestureRecognitizer:TapRecognitizer];
//阴影
UIImageView*shadows=[[UIImageView alloc]initWithImage:[UIImageName:@“pickerShadows.png”];
[自添加子视图:阴影];
//玻璃
UIImage*glassImage=[UIImage ImageName:@“pickerGlass.png”];
glassImageView=[[UIImageView alloc]initWithFrame:CGRectMake(0.0,76.0,glassImage.size.width,glassImage.size.height)];
glassImageView.image=glassImage;
[自添加子视图:glassImageView];
}
回归自我;
}
-(无效)设置
{
_rowFont=[UIFont boldSystemFontOfSize:24.0];
_行缩进=30.0;
currentRow=0;
rowsunt=0;
visibleViews=[[NSMutableSet alloc]init];
recycledViews=[[NSMutableSet alloc]init];
}
#布拉格马克-商业
-(void)重新加载数据
{
//临时视图
currentRow=0;
rowsunt=0;
用于(UIView*可视视图中的视图)
[查看从SuperView移除];
用于(UIView*在RecycledView中查看)
[查看从SuperView移除];
visibleViews=[[NSMutableSet alloc]init];
recycledViews=[[NSMutableSet alloc]init];
rowsCount=[DatasourceNumberOfRowsInPickerView:self];
[contentView setContentOffset:CGPointMake(0.0,0.0)动画:否];
contentView.contentSize=CGSizeMake(contentView.frame.size.width,39.0*rowsCount+4*39.0);
[自我TileView];
}
-(无效)确定当前路径
{
CGFloat delta=contentView.contentOffset.y;
内部位置=圆形(δ/39.0);
当前行=位置;
[contentView设置ContentOffset:CGPointMake(0.0,39.0*位置)动画:是];
[代理选取视图:self-didSelectRow:currentRow];
}
-(无效)didTap:(id)发送方
{
UITapGestureRecognizer*tapRecognizer=(UITapGestureRecognizer*)发送方;
CGPoint point=[TapRecognitor locationInView:self];
内台阶=地板(点y/39)-2;
[自行制定步骤:步骤];
}
-(void)makeSteps:(int)steps
{
如果(步数==0 | |步数>2 | |步数<-2)
回来
[contentView setContentOffset:CGPointMake(0.0,39.0*currentRow)动画:否];
int newRow=当前行+步数;
如果(新行<0 | |新行>=rowsCount)
{
如果(步骤==-2)
[自行制定步骤:-1];
否则如果(步骤==2)
[自行制定步骤:1];
回来
}
currentRow=currentRow+步数;
[contentView setContentOffset:CGPointMake(0.0,39.0*currentRow)动画:是];
[代理选取视图:self-didSelectRow:currentRow];
}
#pragma标记-回收队列
-(UIView*)退出队列再循环视图
{
UIView*aView=[recycledViews anyObject];
如果(aView)
[recycledViews removeObject:aView];
返回视图;
}
-(BOOL)显示索引的视图:(NSUInteger)索引
{
BOOL foundPage=否;
用于(UIView*可视视图中的视图)
{
int viewIndex=aView.frame.origin.y/39.0-2;
如果(viewIndex==索引)
{
foundPage=是;
打破
}
}
返回页面;
}
-(作废)TileView
{
//计算哪些页面是可见的
CGRect visibleBounds=contentView.bounds;
int firstneedviewindex=floorf(CGRectGetMinY(visibleBounds)/39.0)-2;
int lastNeedViewIndex=floorf((CGRectGetMaxY(visibleBounds)/39.0))-2;
firstNeedViewIndex=MAX(firstNeedViewIndex,0);
LastNeedViewIndex=MIN(lastNeededViewIndex,rowsCount-1);
//回收不再可见的页面
用于(UIView*可视视图中的视图)
{
int viewIndex=aView.frame.origin.y/39-2;
如果(viewIndexLastNeedViewIndex)
{
[recycledViews添加对象:aView];
[查看从SuperView移除];
}
}
[visibleViews minusSet:recycledViews];
//添加缺少的页面
对于(int index=firstNe)
#import "AFPickerView.h"
@implementation AFPickerView
#pragma mark - Synthesization
@synthesize dataSource;
@synthesize delegate;
@synthesize selectedRow = currentRow;
@synthesize rowFont = _rowFont;
@synthesize rowIndent = _rowIndent;
#pragma mark - Custom getters/setters
- (void)setSelectedRow:(int)selectedRow
{
if (selectedRow >= rowsCount)
return;
currentRow = selectedRow;
[contentView setContentOffset:CGPointMake(0.0, 39.0 * currentRow) animated:NO];
}
- (void)setRowFont:(UIFont *)rowFont
{
_rowFont = rowFont;
for (UILabel *aLabel in visibleViews)
{
aLabel.font = _rowFont;
}
for (UILabel *aLabel in recycledViews)
{
aLabel.font = _rowFont;
}
}
- (void)setRowIndent:(CGFloat)rowIndent
{
_rowIndent = rowIndent;
for (UILabel *aLabel in visibleViews)
{
CGRect frame = aLabel.frame;
frame.origin.x = _rowIndent;
frame.size.width = self.frame.size.width - _rowIndent;
aLabel.frame = frame;
}
for (UILabel *aLabel in recycledViews)
{
CGRect frame = aLabel.frame;
frame.origin.x = _rowIndent;
frame.size.width = self.frame.size.width - _rowIndent;
aLabel.frame = frame;
}
}
#pragma mark - Initialization
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
// setup
[self setup];
// backgound
UIImageView *bacground = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pickerBackground.png"]];
[self addSubview:bacground];
// content
contentView = [[UIScrollView alloc] initWithFrame:CGRectMake(0.0, 0.0, frame.size.width, frame.size.height)];
contentView.showsHorizontalScrollIndicator = NO;
contentView.showsVerticalScrollIndicator = NO;
contentView.delegate = self;
[self addSubview:contentView];
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTap:)];
[contentView addGestureRecognizer:tapRecognizer];
// shadows
UIImageView *shadows = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"pickerShadows.png"]];
[self addSubview:shadows];
// glass
UIImage *glassImage = [UIImage imageNamed:@"pickerGlass.png"];
glassImageView = [[UIImageView alloc] initWithFrame:CGRectMake(0.0, 76.0, glassImage.size.width, glassImage.size.height)];
glassImageView.image = glassImage;
[self addSubview:glassImageView];
}
return self;
}
- (void)setup
{
_rowFont = [UIFont boldSystemFontOfSize:24.0];
_rowIndent = 30.0;
currentRow = 0;
rowsCount = 0;
visibleViews = [[NSMutableSet alloc] init];
recycledViews = [[NSMutableSet alloc] init];
}
#pragma mark - Buisness
- (void)reloadData
{
// empry views
currentRow = 0;
rowsCount = 0;
for (UIView *aView in visibleViews)
[aView removeFromSuperview];
for (UIView *aView in recycledViews)
[aView removeFromSuperview];
visibleViews = [[NSMutableSet alloc] init];
recycledViews = [[NSMutableSet alloc] init];
rowsCount = [dataSource numberOfRowsInPickerView:self];
[contentView setContentOffset:CGPointMake(0.0, 0.0) animated:NO];
contentView.contentSize = CGSizeMake(contentView.frame.size.width, 39.0 * rowsCount + 4 * 39.0);
[self tileViews];
}
- (void)determineCurrentRow
{
CGFloat delta = contentView.contentOffset.y;
int position = round(delta / 39.0);
currentRow = position;
[contentView setContentOffset:CGPointMake(0.0, 39.0 * position) animated:YES];
[delegate pickerView:self didSelectRow:currentRow];
}
- (void)didTap:(id)sender
{
UITapGestureRecognizer *tapRecognizer = (UITapGestureRecognizer *)sender;
CGPoint point = [tapRecognizer locationInView:self];
int steps = floor(point.y / 39) - 2;
[self makeSteps:steps];
}
- (void)makeSteps:(int)steps
{
if (steps == 0 || steps > 2 || steps < -2)
return;
[contentView setContentOffset:CGPointMake(0.0, 39.0 * currentRow) animated:NO];
int newRow = currentRow + steps;
if (newRow < 0 || newRow >= rowsCount)
{
if (steps == -2)
[self makeSteps:-1];
else if (steps == 2)
[self makeSteps:1];
return;
}
currentRow = currentRow + steps;
[contentView setContentOffset:CGPointMake(0.0, 39.0 * currentRow) animated:YES];
[delegate pickerView:self didSelectRow:currentRow];
}
#pragma mark - recycle queue
- (UIView *)dequeueRecycledView
{
UIView *aView = [recycledViews anyObject];
if (aView)
[recycledViews removeObject:aView];
return aView;
}
- (BOOL)isDisplayingViewForIndex:(NSUInteger)index
{
BOOL foundPage = NO;
for (UIView *aView in visibleViews)
{
int viewIndex = aView.frame.origin.y / 39.0 - 2;
if (viewIndex == index)
{
foundPage = YES;
break;
}
}
return foundPage;
}
- (void)tileViews
{
// Calculate which pages are visible
CGRect visibleBounds = contentView.bounds;
int firstNeededViewIndex = floorf(CGRectGetMinY(visibleBounds) / 39.0) - 2;
int lastNeededViewIndex = floorf((CGRectGetMaxY(visibleBounds) / 39.0)) - 2;
firstNeededViewIndex = MAX(firstNeededViewIndex, 0);
lastNeededViewIndex = MIN(lastNeededViewIndex, rowsCount - 1);
// Recycle no-longer-visible pages
for (UIView *aView in visibleViews)
{
int viewIndex = aView.frame.origin.y / 39 - 2;
if (viewIndex < firstNeededViewIndex || viewIndex > lastNeededViewIndex)
{
[recycledViews addObject:aView];
[aView removeFromSuperview];
}
}
[visibleViews minusSet:recycledViews];
// add missing pages
for (int index = firstNeededViewIndex; index <= lastNeededViewIndex; index++)
{
if (![self isDisplayingViewForIndex:index])
{
UILabel *label = (UILabel *)[self dequeueRecycledView];
if (label == nil)
{
label = [[UILabel alloc] initWithFrame:CGRectMake(_rowIndent, 0, self.frame.size.width - _rowIndent, 39.0)];
label.backgroundColor = [UIColor clearColor];
label.font = self.rowFont;
label.textColor = RGBACOLOR(0.0, 0.0, 0.0, 0.75);
}
[self configureView:label atIndex:index];
[contentView addSubview:label];
[visibleViews addObject:label];
}
}
}
- (void)configureView:(UIView *)view atIndex:(NSUInteger)index
{
UILabel *label = (UILabel *)view;
label.text = [dataSource pickerView:self titleForRow:index];
CGRect frame = label.frame;
frame.origin.y = 39.0 * index + 78.0;
label.frame = frame;
}
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
[self tileViews];
}
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate
{
if (!decelerate)
[self determineCurrentRow];
}
- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView
{
[self determineCurrentRow];
}
@end
label.textColor = [UIColor colorWithRed:0.0f green:0.0f blue:0.0f alpha:0.75f];