每天多学一点

【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、操作数据:


增加数据


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

[

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,924评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,781评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,813评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,264评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,273评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,383评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,800评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,482评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,673评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,497评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,545评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,240评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,802评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,866评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,101评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,673评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,245评论 2 341

推荐阅读更多精彩内容