美文网首页
每天多学一点

每天多学一点

作者: FishSha | 来源:发表于2017-04-17 23:15 被阅读15次

【iOS】不要在loadView()中调用self.view

因为当self.view返回nil时,会再次调用loadView()生成一个View赋值给self.view,所以会出现循环引用。

【iOS】去除searchBar上下黑线

searchBar.setBackgroundImage(UIImage())

【iOS】通过点击cell上的button获得对应cell的IndexPath

方法一,通过button的superView:

let cell: UITableViewCell = button.superview as! UITableViewCell

let indexPath: IndexPath = self.tableView.indexPath(for: cell)

【iOS】关于Delegate传值

主要用于返回时传值,不适用与对一个新界面传值

protocol自不必多说,首先明确Delegate和Implement:

比如A想要接收通过B传过来的值:

A 就是Implement,B 就是Delegate

5步走:

1、在Protocol中定义一个赋值的方法:func passValue(_ value: String)

2、B中申明一个Protocol的对象:var delegate: Protocol?

3、A中实现Protocol:class A:Protocol

4、在A跳转/引用B的函数中,赋值B的对象:b.delegate = self

5、在B返回/回调A的函数中调用Protocol定义的赋值方法,即可:self.delegate?.passValue("new value")

【iOS】上传App包含药品商城,被打回

PLA 1.2

We found that the Seller and/or Artist names associated with your app do not reflect the name of the financial institution in the app and/or its name and metadata.

To be appropriate for the App Store, your app must be published under a Seller name and Artist name that reflects the financial institution brand, as required by the iOS Developer Program License Agreement.

Section 1.2:

"You" and "Your" means and refers to the person(s) or legal entity (whether the company, organization, educational institution, or governmental agency, instrumentality, or department) using the Apple Software or otherwise exercising rights under this Agreement. For the sake of clarity, You may authorize contractors to develop Applications on Your behalf, but any such Applications must be submitted under Your developer account.

If you have published these apps on behalf of a client, it would be appropriate for your client to enroll in the iOS Developer Program, then add you to their development team so you can develop an app for them to submit under their developer account.

报错见上(我之前的找不到了,苹果也没有历史记录详情),更改的话,网上说的其实也就是直接翻译,这里说下,其实很简单,保证你打包的账号:

iPhone Developer Certificate

和你在https://itunesconnect.apple.com发布app的账户一致,当然这个账户是你app关联公司的旗下啦。

【iOS】有时候需要使用UILabel开头包含图片的效果

文字开头包含图片

有几种做法,开始想到的就是前面的“新品”用图片,后面想想其实自己画一个UILabel也可以,无论怎么样,前面的位置总是要空出来的,这里用到AttributedText属性:

class func settingAttributes(with firstLineHeadIndent:CGFloat) -> [String:Any] {

let paragraphStyle:NSMutableParagraphStyle = NSMutableParagraphStyle()

paragraphStyle.firstLineHeadIndent = firstLineHeadIndent

let attributsDic:Dictionary= [NSParagraphStyleAttributeName: paragraphStyle]

return attributsDic

}

设置这个方法后,只需要在使用的时候调用一下就好啦:

cell.labelCommodityName.attributedText = NSAttributedString(string: "假装是超长的文本", attributes:UILabel.settingAttributes(with:30))//这里的30是前面空出的距离,可调整

【Any】计数从0还是1开始

当该数值是提供给计算机识别时,从0开始;

当该数值是提供给人识别时,从1开始;

【iOS】UIImage中添加UIButton无点击事件触发

解决方案:设置UIImage的userInteractionEnabled为True

原因:这要从iOS的点击事件处理流程说起:

1、当用户点击界面的时候,系统会将该事件加入到一个由UIApplication管理的事件队列中;

2、当UIApplication对事件队列中的进行分发处理的时候,通常会先发送事件给应用程序的主窗口,也就是UIWindow;

3、UIWindow会调用hitTest:withEvent:方法,在UIView视图层的结构中国年找到最合适的UIView来处理;

4、hitTest:withEvent:处理流程如下:

    1)、首先调用当前视图的pointInside:withEvent:方法判断触摸点是否在当前View中;

    2)、若上面的方法返回NO,说明不在当前View中,则调用他的hitTestTest:withEvent:返回nil;

    3)、若上面的方法返回YES,说明在当前的视图中,则遍历当前视图的所有子视图,然后在调用子视图的hitTest:withEvent:重复上面的步骤,直到有子视图返回非空对象(没有自视图了),或者全部子视图遍历结束;

    4)、若第一个才有子视图的hitTest:withEvent:方法返回非空对象,则当前视图的hitTest:withEvent:方法就返回这个对象,处理结束;

    5)、若所有子视图都返回nil,则当前视图的hitTest:withEvent:方法返回当前视图自身(self)

最终,这个触摸事件交给主窗口的hitTest:withEvent:方法返回的视图对象去处理;

注:hitTest:withEvent:方法会忽略以下视图:

        1、隐藏的视图;

        2、禁止用户操作(userInteractionEnabled=NO)的视图;(就是UIImage中添加UIButton的问题)

        3、alpha<0.01的视图;

        4、如果子视图的区域超过父视图的区域,就是父视图的clipsToBounds=No,则子视图超过父视图的区域也会显示,那么正常情况下父视图区域外的触摸操作不会被识别,因为父视图的pointInside:withEvent:方法会返回NO,这样就不会继续向下遍历子视图了,也就是说这个超过父视图的子视图,处于一个无主状态。当然你可以重写pointInside:withEvent:方法来处理这种特殊情况;

结论,因为UIImage的userInteractionEnabled默认为NO,所以会被hitTest:withEvent:忽略掉。

【iOS】Core Data

主要记住三个关键词:NSManagedObjectModel、NSPersistentStoreCoordinator、NSManagedObjectContext

NSManagedObjectModel:托管对象,被管理的对象模型

NSPersistentStoreCoordinator:持久化存储助理,数据库的连接器

NSManagedObjectContext:托管对象上下文,操作增删改查的对象

当然还有NSFetchRequest(获取数据的请求,相当于查询语句)、NSPredicate(查询的条件)、NSEntityDescription(实体结构)

操作数据库,简单分为两步

1、获得托管对象上下文:

创建一个NSManagedObjectContext对象函数

2、操作数据:

增加数据 删除数据 修改数据 搜索数据

[

相关文章

  • 每天多学一点

    【iOS】不要在loadView()中调用self.view 因为当self.view返回nil时,会再次调用lo...

  • 每天多学一点

    想实现践行第50天。五种心态,挑战、创新、自信、积极、责任感。 #20190121 【好日子】十二月初十六:周一 ...

  • 每天一小步

    每天多做一点点,就是成功的开始;每天多创新一点点,就是领先的开始;每天多学一点点,就是进步的开始;每天多进步一点点...

  • 《丰盛之书》

    培养优秀的自已、每天多爱自已一点,每天多认可自已一点,每天多欣赏自已一点,每天多关注自已内在的心一点,每天多发现自...

  • 每天学一点

    你要写文章,最好天天都写一点,哪怕一两百字也好。因为这样能锻炼你写句子的能力,准确用词等等。而那种天天都在看文献,...

  • 每天学一点

    为什么服装大牌广告喜欢性暗示?通常在广告创意的方法中,有一项比较流行的黄金法法则-3B原则,是指美女(Beauty...

  • 每天学一点

    人总是恶念多 善念少 业障多 福报少 烦恼多 智慧少 多多少少很悬殊 别人夸一句开心半天 批评一句难过几天 甚至耿...

  • 每天学一点

    小成功需要朋友,大成功需要敌人。因为,每一个人都太容易懈怠,需要用敌人来激发斗志。 不要把每一个人的...

  • 每天学一点

    由于疫情期间出也出不去什么都做不了,只能每天待在家里学习,每天学习一点等疫情过去也差不多了 今天尝试给儿子断奶,打...

  • 每天学一点

    一:英语口语 1:Shut up 闭嘴 2:No way 没门 3:Buy it 买下来 4:Believe me...

网友评论

      本文标题:每天多学一点

      本文链接:https://www.haomeiwen.com/subject/remqattx.html