bug的解决格局,关于点击UITableViewCell

不通晓我们是还是不是蒙受点击tableViewCell弹出提示框的时候开采延迟难题,第3回点击的时候会健康的弹出,再点击两次她就有有延迟,一般延迟1~2秒。笔者以为是自己料定写多了才面世的这种难点,小编试了过多次开采不是本身的问题。大家看下延迟

一.有关选中不选中难点的管理情势

需求:私下认可选项第一个,其次单机那些选择那七个
1.第一在Model层使用BOOL声美素佳儿(Friso)个变量是来记录是或不是选中

//标记是否是被选中
@property (nonatomic, assign) BOOL selectedFlag;

2.在获取数据之后暗许选项第二个

[[self.giftBagDataArr firstObject] setSelectedFlag:YES]; //默认选中第一个

3.在didSelectItemAtIndexPath办法中遍历数据

    for (LYNoticeModel *model in self.giftBagDataArr) {

        model.selectedFlag = NO;
    }
    if (self.giftBagDataArr.count <= 0) return;
    LYNoticeModel *noticeModel = self.giftBagDataArr[indexPath.row];
    noticeModel.selectedFlag = YES;

4.在cell中的操作如下:

- (void)setModel:(LYNoticeModel *)model{
  if(!model)return;
    _model = model;
    self.nameLabel.text = model.title;
    if (model.selectedFlag) {
        [self selectedCell];
    }else{
        [self unselectedCell];
    }
}
- (UIBezierPath*)path{
    if (!_path){
        _path = [UIBezierPath bezierPathWithRoundedRect:self.background.bounds cornerRadius:2];
    }
    return _path;
}
//单元格是选中状态
- (void)selectedCell{
    self.background.layer.shadowColor = kColorMainRed.CGColor;
    self.background.layer.shadowPath = self.path.CGPath;
    self.background.layer.shadowOpacity = 1;
}
//单元格不是选中状态
- (void)unselectedCell{
    self.background.layer.shadowOpacity = 0;
}
- (void)initUI{
    self.background = [[UIView alloc]init];
    [self addSubview:self.background];
   ...//初始化其他UI控件
}
  • 今日在看SDWebImage的德姆o的时候一通乱点...比较有趣的事体时有爆发了 看图
  • 好端端意况下一旦图片被加载成功中间的加载图片的黄华就不会再出现,再转黄华:

1.iOS11上上出现UIToolbar上增加开关,button点击事件不能响应难点

解决办法: 在iOS11以上的情况下 UIToolbar的UIToolbarContentView会出现覆盖在视图最上层情况,导致后续添加的按钮无法点击,所以为了避免这种情况下按钮无法点击
 需要在将UIToolbar添加到UI层上之后立马[toolbar layoutIfNeeded];。降低UIToolbarContentView的层级关系

图片 11.gif

二.有关collection选中与选中难点,在那之中最终三个是输入框

需求:暗许选项第多少个,其次单机这几个选用那么些,珍视在于最后输入框的入选
大概出现的主题素材

  • 根据地点的方法做,填葫芦画瓢的法子。独有一点点击最终一个cell才会选择,不过不会弹出键盘
  • 当点击最后三个输入框,大概最终三个不被增选,但是足以弹出键盘

图片 202.gif

2.在iPhone5C上 [UIFont fontWithName:familyNamed size:font] 方法不会被科学实行

解决办法:需要修改为系统的[UIFont systemFontOfSize:font];

世家开采了吗,第一遍点击是健康的,再多点击五回就涌出了推迟的难点!(笔者的cell.selectionStyle

UITableViewCellSelectionStyleNone;)网络看了看不完资料,有的人视为runloop没有使UI即时更新。用谷歌(Google)查也没查出来什么原因。但是幸而难题化解了,不过不亮堂怎么样来头。化解措施一:

typedef NS_ENUM(NSInteger, UITableViewCellSelectionStyle) { UITableViewCellSelectionStyleNone, UITableViewCellSelectionStyleBlue, UITableViewCellSelectionStyleGray, UITableViewCellSelectionStyleDefault NS_ENUM_AVAILABLE_IOS};

那是cell的当选风格,不选第一个就能够解决了,但是非常丑!

不留余地办法二:

- tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:NO];}

在点击cell的时候增加那句话,完美解决!看下相比较图:

图片 32.gif

名高天下的看出来延迟未有了吗!好的,希望对我们有匡助啊!太平山不改,绿水长流。

三.关于一个奇葩键盘弹起中的三个奇葩难题

起因:源点于禅道上建议bug

图片 4

Snip20170522_4.png

经过:首先对于这些bug,我拿自身手提式有线电话机6s测的时候没未有出现就像主题素材,然后同事拿本身这一个5s就涌出了这一个标题,不过奇葩的是,有三个分界面跟那个是公用的,可是那边却能弹出键盘。同事看了深入何况也检查了代码,木有开掘难题,于是叫自身看一下,笔者同样的去反省了下代码,答案是大同小异的。以前键盘是能够弹出出来的,后来测量试验妹子说很困难着,同事就多元帅十分_inputTextF的冲天改了下。可是千想万想未有想到是此处的错,另两个分界面包车型大巴公用的却能弹,最终照旧选用Beyond Compare相对来讲工具才试出来的。对于那几个奇葩的bug,得不错记住,省的下一次再犯。

图片 5

Snip20170519_1.png

  • 当点击正在加载图片的cell的时候,点击步入后是转黄花.再点击别的已经加载好图片的cell的时候里面未有九华.
  • 不健康意况就是成功加载图片的cell点击进去后提示器照旧存在下图:

3.体系自带UIAlertController弹出延迟难题

解决办法:可使用回到主线程进行弹出,有效避免系统弹框延迟问题
        dispatch_async(dispatch_get_main_queue(), ^{
            [self presentViewController:alert animated:true completion:nil];
        });

四.关于选取SDWebImagView中当中又有gif的图的管理格局

参谋此前写的稿子

图片 601.gif

4.WKWebView上使用自定义UIMenuController

小伙伴们可以测试一下,WKWebView正常情况下是无法取消掉系统自带的复制,粘贴,全选等选项的
如果当前WKWebView中没有弹出键盘需求的话可直接使用以下办法弹出自定义按钮
- (BOOL)canResignFirstResponder{
    if (_dismissSelf) {
        return YES;
    }
    return NO;
}

- (void)viewWillDisappear:(BOOL)animated{
    [super viewWillDisappear:animated];
    self.dismissSelf = YES;
}

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.dismissSelf = NO;
}
@warning _dismissSelf 这个布尔值的意义在为NO时,可展示自定义的UIMenuItem,
但是- (BOOL)canResignFirstResponder这个函数返回是全局都做修改的。
如果退出当前界面还是为NO的话,那么我们项目中所有的键盘弹出将不起作用

五.cookie莫名字为空了

本次两台测量检验机在兔娃儿菜拉下来的包都未有数据,以前打客车包都是有数量的,于是在看大家的和煦的无绳电话机是有多少的,所以表达不是后台挂了,于是乎就拿测量检验机跑到大家手提式无线电话机上,发掘cookie为空,自个儿找了遥不可及的标题,终归未有想明白怎会空,以前都以精美的,怎么要到快上线的时候出现那样奇葩的标题,结果换了一个Wifi,玄妙的事体现身了,数占有了。接着拿另一台手提式有线电话机换了个Wift也许有了数量,可是那么些奇妙又奇葩的难点,小编到最近照旧一种懵逼的意况

  • 当点击未有加载好图片的cell的时候内部转金蕊,当再次点击已经加载好图片的cell的时候,图片大旨也应运而生了黄华.试了好数次都那样.

  • 缘由就是加载图片的提示器未有被移除干净.看SDWebImage的源码.

  • 找到Demo的 .m文件

    图片 7Paste_Image.png

  • 找到UIImageView WebCache.m文件中

5.UISearchBar相关问题

图片 8

EC94CE76-CD0A-4DE7-A6E0-608A041A1B6A.png

-(UISearchBar *)poiSearchBar{
    if (!_poiSearchBar) {
        _poiSearchBar = [[UISearchBar alloc]init];
        _poiSearchBar.backgroundImage = [[UIImage alloc]init];
        _poiSearchBar.barTintColor = [UIColor uiColorFromString:@"#f0f3f8"];
        _poiSearchBar.placeholder = @"请输入检索信息";
        _poiSearchBar.delegate = self;
        _poiSearchBar.barStyle = UIBarStyleDefault;
        _poiSearchBar.tintColor = [UIColor redColor];
        [_poiSearchBar setImage:[UIImage imageNamed:@"search_Icon"] forSearchBarIcon:UISearchBarIconSearch state:UIControlStateNormal];
        // 设置圆角和边框颜色
        UITextField * searchF = [_poiSearchBar valueForKey:@"searchField"];// KVO获取私有变量
        if (searchF) {
            [searchF setBackgroundColor:[UIColor  uiColorFromString:@"#f0f3f8"]];
            [searchF setValue:[UIFont boldSystemFontOfSize:13] forKeyPath:@"_placeholderLabel.font"];//KVC
            searchF.returnKeyType = UIReturnKeySearch;
            searchF.layer.cornerRadius = 5;
            searchF.layer.borderWidth = 1;
            searchF.layer.borderColor = [UIColor redColor].CGColor;
            searchF.layer.masksToBounds = YES;
            [searchF setTintColor:[UIColor uiColorFromString:@"#1997eb"]];

        }
    }
    return _poiSearchBar;

}

搜索框上取消按钮

-(void)searBarText:(UISearchBar*)searchBar{
    searchBar.showsCancelButton = YES;
    for (UIView * view in [[[searchBar subviews] objectAtIndex:0] subviews]) {
        if ([view isKindOfClass:[NSClassFromString(@"UINavigationButton")class]]) {
            UIButton * cancle = (UIButton *)view;
            cancle.hidden = NO;
            [cancle setTitle:@"取消" forState:UIControlStateNormal];
            [cancle setTitleColor:[UIColor uiColorFromString:@"#f0f3f8"] forState:UIControlStateNormal];
            cancle.enabled = YES;//系统默认为NO.为了达到没有输入文字直接点击取消可以返回之前的界面。而不是第一次点击取消会获取焦点走searchBarTextDidBeginEditing方法 。需要在找到取消按钮的时候设置为YES
            cancle.titleLabel.font = [UIFont systemFontOfSize:15];
            [cancle addTarget:self action:@selector(cancleButton:) forControlEvents:UIControlEventTouchUpInside];
        }
    }



}

UISearchBar解析
(1)改变背景色
找到_searchbar.subviews 数组中的第一个view。自定义一个view添加背景色放在上变
(2)不显示背景色
样式中(searchBarStyle)选择 UISearchBarStyleMinimal //不显示背景色
(3)改变输入框的圆角
找到textfield  UITextfield * textF = [_searchBar valueForKey:”searchField”]navBo如果存在改变圆角。
(4)改变提示字体的大小
利用KVC 实现改变提示字体的大小
[_textfield setValue:[UIFont boldSystemFontOfSize:字体大小]

七.键盘假如是手写键盘则会见世茶色一条大概高为40的层面

端详参见,类似这种成效。
经过:
并发的难题:

图片 9

1234.gif

图片 10

12345.gif

缓慢解决格局:
让子公司的同事去掉了那几行代码,重新打了个静态库过来就好了。

图片 11Paste_Image.png

6.革除尾部停留

-(void)scrollViewDidScroll:(UIScrollView*)scrollerView{
  CGFloat section = 区头高度
  if(scrollView.contentOffset.y < section && scrollView.contentOffset.y >0){
   scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y,0,0,0)
  }else if {
   scrollView.contentInset = UIEdgeInsetMake(-section,0,0,0)
  }

}

八.中度frame始终有标题,打字与印刷看中度又是健康的

由于玩耍划账和兑换乐盈券是动态获取的,故笔者的分界面包车型地铁数据实际不是死多少,中度也是随着后台的回到来决断是或不是出示。切换TabBar的时候,第三次高度不对,再切换三回就好像常了。
如图:

图片 12

Snip20170629_7.png

  • 再点击步入仍旧那么些文件找到了最终方法的兑现:

7.两个字符串拼接(举个例子以逗号拼接)

NSArray *strs = [@"a", @"b", @"c"];
    NSString *string = [strs componentsJoinedByString:@","];
一句代码解决(用xib做的,故在awakeFromNib加多底下那行代码就可以)
- (void)awakeFromNib{
    [super awakeFromNib];
    self.autoresizingMask = UIViewAutoresizingNone;
}

图片 13Paste_Image.png

8.多个字符串(单个)分隔 (比如以逗号分隔)

NSString *a = [[NSString alloc] initWithString : @"冬瓜,西瓜,火龙果,大头,小狗" ];
    NSArray *b = [a componentsSeparatedByString:@","];

九.在一加5突显不正规,在小米6显示经常

图片 14

Snip20170629_9.png

  • 向下寻觅关于移除加载图片提醒器的方法.

9.截取字符串

- (NSString *)substringFromIndex:(NSUInteger)from; 从哪个位置其到尾
- (NSString *)substringToIndex:(NSUInteger)to; 从开头到哪个位置
- (NSString *)substringWithRange:(NSRange)range;  从哪到哪之间的位置
化解方法:
-(void)setFrame:(CGRect)frame{
    //空出我的页面中间的的菜单栏
    frame.origin.y  = 40;

    frame.size.height  = 1 * 40;

    frame.origin.x = 0;
    frame.size.width = LYScreen_Width;

    [super setFrame:frame ];
}

10.相间钦定字符串

NSArray *resultArr1 =     [stringcomponentsSeparatedByString:@"_"];
- sd_setImageWithURL:url placeholderImage:(UIImage *)placeholder options:(SDWebImageOptions)options progress:(SDWebImageDownloaderProgressBlock)progressBlock completed:(SDWebImageCompletionBlock)completedBlock { [self sd_cancelCurrentImageLoad]; objc_setAssociatedObject(self, &imageURLKey, url, OBJC_ASSOCIATION_RETAIN_NONATOMIC); if (!(options & SDWebImageDelayPlaceholder)) { dispatch_main_async_safe(^{ self.image = placeholder; }); } if  { // check if activityView is enabled or not if ([self showActivityIndicatorView]) { [self addActivityIndicator]; } __weak __typeofwself = self; id <SDWebImageOperation> operation = [SDWebImageManager.sharedManager downloadImageWithURL:url options:options progress:progressBlock completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, BOOL finished, NSURL *imageURL) { /** 干掉原来的即可 */// [wself removeActivityIndicator]; //这是原来的移除指示器的方法,Demo中的指示器并没有移除干净. /** 1.当部分图片有缓存的时候,一部分没有缓存下载的会后,点击进去一直转菊花 2.切出来,点击缓存好图片的cell的时候,此时cell内部中间有菊花一直在转 3.原因就是在这个地方没把ActivityIndicator移除干净. 4.解决办法:遍历self.subviews,判断如果是UIActivityIndicatorView就移除,全部移除干净 */ for (UIView * indicatorView in self.subviews) { if ([indicatorView isKindOfClass:[UIActivityIndicatorView class]]) { [indicatorView removeFromSuperview]; } } if  return; dispatch_main_sync_safe(^{ if  return; if (image && (options & SDWebImageAvoidAutoSetImage) && completedBlock) { completedBlock(image, error, cacheType, url); return; } else if  { wself.image = image; [wself setNeedsLayout]; } else { if ((options & SDWebImageDelayPlaceholder)) { wself.image = placeholder; [wself setNeedsLayout]; } } if (completedBlock && finished) { completedBlock(image, error, cacheType, url); } }); }]; [self sd_setImageLoadOperation:operation forKey:@"UIImageViewImageLoad"]; } else { dispatch_main_async_safe(^{ /** 干掉原来的即可 */// [self removeActivityIndicator]; /** 1.当部分图片有缓存的时候,一部分没有缓存下载的会后,点击进去一直转菊花 2.切出来,点击缓存好图片的cell的时候,此时cell内部中间有菊花一直在转 3.原因就是在这个地方没把ActivityIndicator移除干净. 4.解决办法:遍历self.subviews,判断如果是UIActivityIndicatorView就移除,全部移除干净 */ for (UIView * indicatorView in self.subviews) { if ([indicatorView isKindOfClass:[UIActivityIndicatorView class]]) { [indicatorView removeFromSuperview]; } } NSError *error = [NSError errorWithDomain:SDWebImageErrorDomain code:-1 userInfo:@{NSLocalizedDescriptionKey : @"Trying to load a nil url"}]; if (completedBlock) { completedBlock(nil, error, SDImageCacheTypeNone, url); } }); }}

11.替换某二个字符串

NSString * string=@"2011-11-29";
string=[string stringByReplacingOccurrencesOfString:@"-"withString:@"/"]; 
结果: 2011/11/29
  • 找到移除提示器的方法,通过对子控件subViews遍历,找到类型是UIActivityIndicatorView的类别的控件全部移除就可以.

12.增加中划线

NSString *textStr = [NSString stringWithFormat:@"%@元", primeCost];

  //中划线
  NSDictionary *attribtDic = @{NSStrikethroughStyleAttributeName: [NSNumber numberWithInteger:NSUnderlineStyleSingle]};
  NSMutableAttributedString *attribtStr = [[NSMutableAttributedString alloc]initWithString:textStr attributes:attribtDic];

  // 赋值
  strikeLabel.attributedText = attribtStr;
  • 本人际遇的大家大概未有遭逢过,也许有十分的大希望是自身要好的难点,可是经过那么些大约阴毒的不二秘技消除了刚刚的难题.

13.增添下划线:

NSString *textStr = [NSString stringWithFormat:@"%@元", primeCost];

  // 下划线
  NSDictionary *attribtDic = @{NSUnderlineStyleAttributeName: [NSNumber numberWithInteger:NSUnderlineStyleSingle]};
  NSMutableAttributedString *attribtStr = [[NSMutableAttributedString alloc]initWithString:textStr attributes:attribtDic];

  //赋值
  underlineLabel.attributedText = attribtStr;

14.联合收起键盘

[[[UIApplication sharedApplication] keyWindow] endEditing:YES];

15.获取APP缓存大小,并清理

- (CGFloat)getCachSize {

    NSUInteger imageCacheSize = [[SDImageCache sharedImageCache] getSize];
    //获取自定义缓存大小
    //用枚举器遍历 一个文件夹的内容
    //1.获取 文件夹枚举器
    NSString *myCachePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];
    NSDirectoryEnumerator *enumerator = [[NSFileManager defaultManager] enumeratorAtPath:myCachePath];
    __block NSUInteger count = 0;
    //2.遍历
    for (NSString *fileName in enumerator) {
        NSString *path = [myCachePath stringByAppendingPathComponent:fileName];
        NSDictionary *fileDict = [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil];
        count  = fileDict.fileSize;//自定义所有缓存大小
    }
    // 得到是字节  转化为M
    CGFloat totalSize = ((CGFloat)imageCacheSize count)/1024/1024;
    return totalSize;
}
13.清理APP缓存
- (void)handleClearView {
    //删除两部分
    //1.删除 sd 图片缓存
    //先清除内存中的图片缓存
    [[SDImageCache sharedImageCache] clearMemory];
    //清除磁盘的缓存
    [[SDImageCache sharedImageCache] clearDisk];
    //2.删除自己缓存
    NSString *myCachePath = [NSHomeDirectory() stringByAppendingPathComponent:@"Library/Caches"];
    [[NSFileManager defaultManager] removeItemAtPath:myCachePath error:nil];
}

16.调换办法的兑现

Class aClass = [self class]; 

        SEL originalSelector = @selector(viewWillAppear:); 
        SEL swizzledSelector = @selector(xxx_viewWillAppear:); 

        Method originalMethod = class_getInstanceMethod(aClass, originalSelector); 
        Method swizzledMethod = class_getInstanceMethod(aClass, swizzledSelector); 

        BOOL didAddMethod = 
            class_addMethod(aClass, 
                originalSelector, 
                method_getImplementation(swizzledMethod), 
                method_getTypeEncoding(swizzledMethod)); 

        if (didAddMethod) { 
            class_replaceMethod(aClass, 
                swizzledSelector, 
                method_getImplementation(originalMethod), 
                method_getTypeEncoding(originalMethod)); 
        } else { 
            method_exchangeImplementations(originalMethod, swizzledMethod); 
        }

17.多少个常用权力决断

 if ([CLLocationManager authorizationStatus] ==kCLAuthorizationStatusDenied) {
        NSLog(@"没有定位权限");
    }
    AVAuthorizationStatus statusVideo = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];
    if (statusVideo == AVAuthorizationStatusDenied) {
        NSLog(@"没有摄像头权限");
    }
    //是否有麦克风权限
    AVAuthorizationStatus statusAudio = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];
    if (statusAudio == AVAuthorizationStatusDenied) {
        NSLog(@"没有录音权限");
    }
    [PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
        if (status == PHAuthorizationStatusDenied) {
            NSLog(@"没有相册权限");
        }
    }];

18.升级cocoapods

在终端执行 sudo gem install -n / usr / local / bin cocoapods --pre

19.禁止手提式有线电话机睡眠

[UIApplication sharedApplication].idleTimerDisabled = YES;

20.导入自定义的字体库

1、找到你想用的字体的 ttf 格式,拖入工程
2、在工程的plist中增加一行数组,“Fonts provided by application”
3、为这个key添加一个item,value为你刚才导入的ttf文件名
4、直接使用即可:label.font = [UIFont fontWithName:@"你刚才导入的ttf文件名" size:20.0];

21.将tableview滚动到顶部

[tableView setContentOffset:CGPointZero animated:YES];
或者
[tableView scrollRectToVisible:CGRectMake(0, 0, 1, 1) animated:YES];

22.自定义cell选中背景颜色

UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor redColor];
[cell setSelectedBackgroundView:bgColorView];

23.UILabel装置文字描边

子类化UILabel,重写drawTextInRect方法
- (void)drawTextInRect:(CGRect)rect
{
    CGContextRef c = UIGraphicsGetCurrentContext();
    // 设置描边宽度
    CGContextSetLineWidth(c, 1);
    CGContextSetLineJoin(c, kCGLineJoinRound);
    CGContextSetTextDrawingMode(c, kCGTextStroke);
    // 描边颜色
    self.textColor = [UIColor redColor];
    [super drawTextInRect:rect];
    // 文本颜色
    self.textColor = [UIColor yellowColor];
    CGContextSetTextDrawingMode(c, kCGTextFill);
    [super drawTextInRect:rect];
}

24.手提式有线电电话机摇一摇效果

1、打开摇一摇功能
    [UIApplication sharedApplication].applicationSupportsShakeToEdit = YES;
2、让需要摇动的控制器成为第一响应者
[self becomeFirstResponder];
3、实现以下方法

// 开始摇动
- (void)motionBegan:(UIEventSubtype)motion withEvent:(UIEvent *)event
// 取消摇动
- (void)motionCancelled:(UIEventSubtype)motion withEvent:(UIEvent *)event
// 摇动结束
- (void)motionEnded:(UIEventSubtype)motion withEvent:(UIEvent *)event

25.收获view的坐标在整整window上的岗位

// v上的(0, 0)点在toView上的位置
CGPoint point = [v convertPoint:CGPointMake(0, 0) toView:[UIApplication sharedApplication].windows.lastObject];
或者
CGPoint point = [v.superview convertPoint:v.frame.origin toView:[UIApplication sharedApplication].windows.lastObject];

26.在非ViewController的地点弹出UIAlertController对话框

//  最好抽成一个分类
UIAlertController *alertController = [UIAlertController alertControllerWithTitle:@"Title" message:@"message" preferredStyle:UIAlertControllerStyleAlert];
//...
id rootViewController = [UIApplication sharedApplication].delegate.window.rootViewController;
if([rootViewController isKindOfClass:[UINavigationController class]])
{
    rootViewController = ((UINavigationController *)rootViewController).viewControllers.firstObject;
}
if([rootViewController isKindOfClass:[UITabBarController class]])
{
    rootViewController = ((UITabBarController *)rootViewController).selectedViewController;
}
[rootViewController presentViewController:alertController animated:YES completion:nil];

27.设置tableView分界线颜色

[self.tableView setSeparatorColor:[UIColor myColor]];

28.设置tableviewcell分水岭顶到底

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
    [cell setSeparatorInset:UIEdgeInsetsZero];
    [cell setLayoutMargins:UIEdgeInsetsZero];
    cell.preservesSuperviewLayoutMargins = NO;
}

- (void)viewDidLayoutSubviews {
    [self.tableView setSeparatorInset:UIEdgeInsetsZero];
    [self.tableView setLayoutMargins:UIEdgeInsetsZero];
}

29.在场合栏扩大互联网央求的菊华,类似safari加载网页的时候状态栏黄花

[UIApplication sharedApplication].networkActivityIndicatorVisible = YES;

30.反省三个rect是还是不是包罗一个point

// point是否在rect内
BOOL isContains = CGRectContainsPoint(rect, point);

31.在钦命的增长幅度下,让UILabel自动设置最好font

自适应宽度
label.adjustsFontSizeToFitWidth = YES;

32.为三个View增多虚线边框

结合使用,效果更佳
 CAShapeLayer *border = [CAShapeLayer layer];
    border.strokeColor = [UIColor colorWithRed:67/255.0f green:37/255.0f blue:83/255.0f alpha:1].CGColor;
    border.fillColor = nil;
    border.lineDashPattern = @[@4, @2];
    border.path = [UIBezierPath bezierPathWithRect:view.bounds].CGPath;
    border.frame = view.bounds;
    [view.layer addSublayer:border];

33.UITextView中打开或剥夺复制,剪切,选用,全选等职能

// 继承UITextView重写这个方法
- (BOOL)canPerformAction:(SEL)action withSender:(id)sender
{
// 返回NO为禁用,YES为开启
    // 粘贴
    if (action == @selector(paste:)) return NO;
    // 剪切
    if (action == @selector(cut:)) return NO;
    // 复制
    if (action == @selector(copy:)) return NO;
    // 选择
    if (action == @selector(select:)) return NO;
    // 选中全部
    if (action == @selector(selectAll:)) return NO;
    // 删除
    if (action == @selector(delete:)) return NO;
    // 分享
    if (action == @selector(share)) return NO;
    return [super canPerformAction:action withSender:sender];
}

34.UITableView 的删减操作,由于iOS11 手感的优化,出现了以下难题:

图片 15

1501122-d5700637fe865832.gif

新兴检察原因是最开头写代码的时候从不放在心上细节,在概念删除按键的时候未有安装合适的门类:从前是 UITableViewRowActionStyleNormal,改为UITableViewRowActionStyleDestructive就可以

缘由:由于未有安装 删除 所特有的type,由此在UI浮现上暗许是不删除的,由此适配的是保留cell的UI,独有设置删除属性后,工夫和deleteRowsAtIndexPaths方法保持UI上的一块儿

UITableViewRowAction *deleteRowAction = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDestructive title:@"删除" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath) {
    [self.dataSource removeObjectAtIndex:indexPath.row];
    // 刷新tableview
    [self.tableView beginUpdates];
    [self.tableView deleteRowsAtIndexPaths:@[ indexPath ] withRowAnimation:UITableViewRowAnimationAutomatic];
    [self.tableView endUpdates];
}

未完待续...

本文由星彩网app下载发布于计算机编程,转载请注明出处:bug的解决格局,关于点击UITableViewCell

TAG标签: 星彩网app下载
Ctrl+D 将本页面保存为书签,全面了解最新资讯,方便快捷。