iOS的一些特性和思考iOS DeveloperiOS 开发

开发中常见的bug/及项目解说

2016-09-20  本文已影响383人  恋熙

1.添加点按手势:

//添加一个点按手势

UITapGestureRecognizer*tap = [[UITapGestureRecognizeralloc]initWithTarget:selfaction:@selector(tap)];

//开启图片可以进行交互

adImageView.userInteractionEnabled=YES;

[adImageViewaddGestureRecognizer:tap];

2.点击cell进行页面跳转:

#pragma mark - UICollectionViewDelegate

//点击cell就会调用

- (void)collectionView:(UICollectionView*)collectionView didSelectItemAtIndexPath:(NSIndexPath*)indexPath

{

//获取对应模型

XMGSquareItem*item =_squareItems[indexPath.row];

//只要不是http,就跳转到网页

if(![item.urlhasPrefix:@"http"])return;

//跳转到网页

//展示WKWebView

XMGWebViewController*webVc = [[XMGWebViewControlleralloc]init];

webVc.url= [NSURLURLWithString:item.url];

[self.navigationControllerpushViewController:webVcanimated:YES];

与push相反的是[selfpopViewControllerAnimated:YES];

3.:设置全屏滑动返回功能,pan:滑动返回功能

//1.添加自己的滑动手势,用系统的target= <(action=handleNavigationTransition:方法实现滑动返回

idtarget =self.interactivePopGestureRecognizer.delegate;

//2.创建手势

UIPanGestureRecognizer*pan = [[UIPanGestureRecognizeralloc]initWithTarget:targetaction:@selector(handleNavigationTransition:)];

//3.将手势添加到当前控制器中

[self.viewaddGestureRecognizer:pan];

//4.去掉系统边缘滑动手势

self.interactivePopGestureRecognizer.enabled=NO;

//5.设置当前控制器为手势代理

pan.delegate=self;

//每次触发手势就会判断是否接受手势

- (BOOL)gestureRecognizer:(UIGestureRecognizer*)gestureRecognizer shouldReceiveTouch:(UITouch*)touch{

//只有非根控制器才允许滑动,判断当前是不是跟控制器,如果不是允许滑动

returnself.childViewControllers.count>1;

}

4.解决tabbar条按钮图片和文字渲染问题:

1>解决文字渲染

/*

1.appearance获取全局UItabBar外观,在开发中尽量不要使用appearance,而是要使用appearanceWhenContainedIn:表示获取哪个类下面的导航条

2.导航条标题字体的大小由导航条决定

*/

UITabBarItem*item = [UITabBarItemappearanceWhenContainedIn:self,nil];

//1.创建字典

NSMutableDictionary*attr = [NSMutableDictionarydictionary];

//用字典描述文本属性,设置其颜色为黑色

attr[NSForegroundColorAttributeName] = [UIColorblackColor];

//设置选中状态下的文字颜色为黑色

[itemsetTitleTextAttributes:attrforState:UIControlStateSelected];

//在正常状态下设置字条大小,只有在正常状态下才能设置字体大小

//创建字典用来描述文本属性

NSMutableDictionary*attrNor = [NSMutableDictionarydictionary];

//设置字体大小

attrNor[NSFontAttributeName] = [UIFontsystemFontOfSize:14];

//在正常状态下设置字体为16号字体

[itemsetTitleTextAttributes:attrNorforState:UIControlStateNormal];

}

2>解决图片渲染:给图片添加个分类方法

#import"UIImage+Image.h"

@implementationUIImage (Image)

//实现不要加载渲染图片的方法

+(UIImage*)imageWithOriginalRenderingMode:(NSString*)imageName{

//1.创建图片

UIImage*image = [UIImageimageNamed:imageName];

//返回选中的图片

return[imageimageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];

}

@end

5.解决xib拉伸中的bug:

01-当控件从xib加载,发现莫名其妙的不好使,怎么解决

答:// bug:如果发现一个控件从xib加载出来,显示的效果跟xib不一样,就可能被拉伸,取消这个控件不要拉伸

//理论:任何一个view,都会有额外拉伸属性

self.autoresizingMask=UIViewAutoresizingNone;

6.全局滑动手势/02进阶/彩票/02day/12-滑动移除控制器全屏实现&解决bug(添加在view上)

tableview左右滑动,让tableview添加到collectionView的cell上,滑动collectionView的cell实现

性能优化:

使用collectionView的好处是,其可以循环利用解决渲染,当一个view出现在屏幕上时就会渲染占用内存降低性能,当用collectionView时,当一个新的cell从缓存池出去时,会将对应的子控制器的view添加到cell上,同时删除之前子控制器的view降低内存,并将之前的cell放入缓存池中

7.移动下划线滚动位置:

//移动下划线的位置

[UIViewanimateWithDuration:0.25animations:^{

_underLineView.xmg_centetX= titleButton.xmg_centetX;

}];

}

上一篇下一篇

猜你喜欢

热点阅读