iOS开发中遇到的问题 小计

事件冲突

  1. 解决scrollView的滑动事件与子视图按钮事件冲突
    self.scrollView.panGestureRecognizer.delaysTouchesBegan = YES;

2.根控制器TabBarViewController的setSelectedIndex进行切换标签时,从标签的导航栈中跳转到其他标签时出现的问题,底部的tabbar隐藏?

因为需要先pop到导航栈的根视图,然后再切到其他标签。
pop方法一定不要使用动画,设置成NO,因为动画在标签切换时,未完成就会出现问题。
原理:设置成YES,此时pop操作会在动画执行完成之后,晚与标签切换,此时会隐藏掉tabbar。

    [self.navigationController popToRootViewControllerAnimated:NO];

    AppDelegate *delegate = (AppDelegate *)[UIApplication sharedApplication].delegate;
    [delegate.rootController setSelectedIndex:0];

3.使用Masonry进行适配scrollview时,因为无法通过CGSizeMake来设置它的contentSize,可以使用一个中间过渡view进行处理。

4.滑动时动态获取当期显示的是第几个section,在方法- (void)scrollViewDidScroll:(UIScrollView *)scrollView中获取

    NSInteger section = [self.listView.tableView indexPathForRowAtPoint:CGPointMake(0, scrollView.contentOffset.y)].section;

5.更新单个cell时,经常将indexPath设置出错,解决方式根据Section来进行设置,既简单有直观,不容易出错

    NSIndexPath *indexPath = [NSIndexPath indexPathForRow:1 inSection:0];
    
    [self.listView.tableView reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone];

6.设置按钮文字靠左对齐
// 设置UIButton字体居左显示
repostBtn.contentHorizontalAlignment = UIControlContentHorizontalAlignmentLeft;

// 设置button的title就距左边10个像素的距离。
repostBtn.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 0, 0);

7.使用Masonry在给cell赋值时,动态更新lable的高度(使用了lable的宽度,而不是计算出来的宽度),发现frame没有发生改变?

原因是:计算高度时,lable的宽度为0,而不是真实的宽度。因为是使用Masonry进行的约束,然后查找原因发现,使用Masonry进行控件约束时,不是立即调用layoutSubviews进行布局更新,此时控件的frame都为0,需要调用layoutIfNeeded方法进行布局更新,调用了系统的layoutIfNeeded方法之后,就会执行layoutSubviews进行布局更新。
参考

8.编译报错
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

原因1:缺少支持的三方类库。

9.collection布局
设置cell距离屏幕两边间隔的时候,一定要在设置size时,宽度减去两边的间隔,然后再设置UIEdgeInsets属性即可。

CGFloat margin = (15);
CGFloat width = (kScreenW - margin - 40)*0.5; // 40是距离屏幕的间隔
CGFloat height = width * (11/8.0);
layout.itemSize = CGSizeMake(width,height);

// 设置内间距   top, left, bottom, right;
layout.sectionInset = UIEdgeInsetsMake(20, 20, 20, 20);
layout.minimumLineSpacing = margin;      // 纵向Cell最小间距
layout.minimumInteritemSpacing = margin;  // 横向Cell最小间距
图片.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、通过CocoaPods安装项目名称项目信息 AFNetworking网络请求组件 FMDB本地数据库组件 SD...
    阳明AGI阅读 16,018评论 3 119
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,255评论 4 61
  • 放假回来已经十五天了,然而又到了离别的时刻,明天我去佛山,我哥也要去深圳打工,昨天妹妹也去学校了,一切都在意料...
    龙集团阅读 330评论 0 0
  • 沫儿长得好看, 小腰纤纤,眸子闪亮。 她不知道,自己还未到这里, 就已经有了她的传闻。 她不知道, 她将成为一件衣...
    凉暖秋夏阅读 139评论 0 1