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

1.添加点按手势:
// 添加一个点按手势
       
UITapGestureRecognizer *tap = [[ UITapGestureRecognizer alloc ] initWithTarget : self action : @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. url hasPrefix : @"http" ]) return ;
   
   
// 跳转到网页
   
// 展示 WKWebView
   
XMGWebViewController *webVc = [[ XMGWebViewController alloc ] init ];
    webVc.
url = [ NSURL URLWithString :item. url ];
    [self.navigationControllerpushViewController:webVcanimated:YES];
与push相反的是  [ self popViewControllerAnimated : YES ];

3.: 设置全屏滑动返回功能 ,pan: 滑动返回功能
    //1. 添加自己的滑动手势 , 用系统的 target= <(action=handleNavigationTransition: 方法实现滑动返回
   
id target = self . interactivePopGestureRecognizer . delegate ;
   
//2. 创建手势
   
UIPanGestureRecognizer *pan = [[ UIPanGestureRecognizer alloc ] initWithTarget :target action : @selector (handleNavigationTransition:)];
   
//3. 将手势添加到当前控制器中
    [
self . view addGestureRecognizer :pan];
   
//4. 去掉系统边缘滑动手势
   
self . interactivePopGestureRecognizer . enabled = NO ;
   
//5. 设置当前控制器为手势代理
    pan.delegate= self;

// 每次触发手势就会判断是否接受手势
- (
BOOL )gestureRecognizer:( UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:( UITouch *)touch{
   
// 只有非根控制器才允许滑动 , 判断当前是不是跟控制器 , 如果不是允许滑动
   
return self . childViewControllers . count > 1 ;

}

4.解决tabbar条按钮图片和文字渲染问题:
1>解决文字渲染
  /*
     1.appearance
获取全局 UItabBar 外观 , 在开发中尽量不要使用 appearance, 而是要使用 appearanceWhenContainedIn: 表示获取哪个类下面的导航条
     2.
导航条标题字体的大小由导航条决定
     */

   
UITabBarItem *item = [ UITabBarItem appearanceWhenContainedIn : self , nil ];
   
//1. 创建字典
   
NSMutableDictionary *attr = [ NSMutableDictionary dictionary ];
   
// 用字典描述文本属性 , 设置其颜色为黑色
    attr[
NSForegroundColorAttributeName ] = [ UIColor blackColor ];
   
// 设置选中状态下的文字颜色为黑色
    [item
setTitleTextAttributes :attr forState : UIControlStateSelected ];
   
   
// 在正常状态下设置字条大小 , 只有在正常状态下才能设置字体大小
   
// 创建字典用来描述文本属性
   
NSMutableDictionary *attrNor = [ NSMutableDictionary dictionary ];
   
// 设置字体大小
    attrNor[
NSFontAttributeName ] = [ UIFont systemFontOfSize : 14 ];
   
// 在正常状态下设置字体为 16 号字体
    [item
setTitleTextAttributes :attrNor forState : UIControlStateNormal ];
}
2>解决图片渲染:给图片添加个分类方法

#import "UIImage+Image.h"

@implementation UIImage (Image)
// 实现不要加载渲染图片的方法
+(
UIImage *)imageWithOriginalRenderingMode:( NSString *)imageName{

   
//1. 创建图片
   
UIImage *image = [ UIImage imageNamed :imageName];
   
// 返回选中的图片
   
return [image imageWithRenderingMode : 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.移动下划线滚动位置:
  // 移动下划线的位置
    [
UIView animateWithDuration : 0.25 animations :^{
       
       
_underLineView . xmg_centetX = titleButton. xmg_centetX ;
    }];
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值