1:增加手势进行左划效果,针对视图并修改其中一个的坐标,菜单用隐藏跟显示

@property(strong,nonatomic)UISwipeGestureRecognizer *recognizer;
self.recognizer = [[ UISwipeGestureRecognizer alloc ] initWithTarget:self action:@selector (handleSwipeFrom:)];
[self.recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)];
[self addGestureRecognizer :self.recognizer];
- (void)handleSwipeFrom:( UISwipeGestureRecognizer *)sender{if (sender.direction == UISwipeGestureRecognizerDirectionLeft )
{
self.rightButton.hidden=NO;
[self.recognizer setDirection:(UISwipeGestureRecognizerDirectionRight)]; [self.valueLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.rightButton.left).with.offset(-);
make.centerY.mas_equalTo(self).with.offset();
make.size.mas_equalTo(CGSizeMake(Main_Screen_Width-, ));
}];
[self.valueLabel layoutIfNeeded];
}
else
{
self.rightButton.hidden=YES;
[self.recognizer setDirection:(UISwipeGestureRecognizerDirectionLeft)]; [self.valueLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
make.right.mas_equalTo(self.right).with.offset(-);
make.centerY.mas_equalTo(self).with.offset();
make.size.mas_equalTo(CGSizeMake(Main_Screen_Width-, ));
}];
[self.valueLabel layoutIfNeeded];
}
}

2:属性名以new开头解决方式

@property (nonatomic,copy) NSString *new_Passwd;

像上面这样写法会报错,可以替换成

@property (nonatomic,copy,getter = theNewPasswd) NSString *new_Passwd;

3:单例类一些注意事项

如果allocWithZone里面的代码不写,用以下三种创建的实例还是三种,不符合我们对单例的运用,当然如果你只针对[HLTestObject sharedInstance]进行实例化时,就是一直满足;把初始化的属性对象放在sharedInstance里面,如果放在init里面进行初始化也会出现不一样的情景;

HLTestObject *objct1 = [HLTestObject sharedInstance];
NSLog(@"%@",objct1);
HLTestObject *objc2 = [[HLTestObject alloc] init];
NSLog(@"%@",objc2);
HLTestObject *objc3 = [HLTestObject new];
NSLog(@"%@",objc3);

声明属性:

@property (assign, nonatomic)   int  height;
@property (strong, nonatomic)   NSObject  *object;
@property (strong, nonatomic)   NSMutableArray  *arrayM;

代码内容:

static HLTestObject *instance = nil;
+ (instancetype)sharedInstance
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [[[self class] alloc] init];
        instance.height = ;
        instance.object = [[NSObject alloc] init];
        instance.arrayM = [[NSMutableArray alloc] init];
    });
    return instance;
}
+ (instancetype)allocWithZone:(struct _NSZone *)zone
{
    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        instance = [super allocWithZone:zone];
    });
    return instance;
}
- (NSString *)description
{
    NSString *result = @"";
    result = [result stringByAppendingFormat:@"<%@: %p>",[self class], self];
    result = [result stringByAppendingFormat:@" height = %d,",self.height];
    result = [result stringByAppendingFormat:@" arrayM = %p,",self.arrayM];
    result = [result stringByAppendingFormat:@" object = %p,",self.object];
    return result;
}

4:UITextField实现左侧空出一定的边距

就是通过uitextfield的leftview来实现的,同时要设置leftviewmode。

如果设置左右边距,需要再加上rightView功能

-(void)setTextFieldLeftPadding:(UITextField *)textField forWidth:(CGFloat)leftWidth
{
CGRect frame = textField.frame;
frame.size.width = leftWidth;
UIView *leftview = [[UIView alloc] initWithFrame:frame];
textField.leftViewMode = UITextFieldViewModeAlways;
textField.leftView = leftview;
}

5:UICollectionView异步加载的实例

-(UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath
{
static NSString * CellIdentifier = @"Event";
EventCollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:CellIdentifier forIndexPath:indexPath]; Event *event = [events objectAtIndex:indexPath.item]; // replace "Event" with whatever class you use for your items实体
cell.eventTitle.text = [event objectForKey:@"title"];
cell.eventImage.image = [event objectForKey:@"image"];
if (cell.eventImage.image == nil) {
NSString *imageUrl = [[[events objectAtIndex:indexPath.item] objectForKey:@"photo"] objectForKey:@"url"]; dispatch_queue_t imageFetchQ = dispatch_queue_create("image fetched", NULL);
dispatch_async(imageFetchQ, ^{
__weak UICollectionView *weakCollection;
NSData *imageData = [NSData dataWithContentsOfURL:[NSURL URLWithString:imageUrl]];
UIImage *image = [UIImage imageWithData:imageData];
if (image)
{
dispatch_async(dispatch_get_main_queue(), ^{
[event setObject:image forKey:@"image"]; // updating the model here
[weakCollection reloadItemsAtIndexPaths:@[indexPath]];
});
}
});
}
return cell;
}

6:如何拿到别人APP图片

a:打开你Mac上的iTunes,点击我的应用, 找到刚下载好的应用, 右击在finder中显示

b:按Enter(回车键), 修改微信ipa文件的后缀为.zip, 即把微信 6.3.22.ipa变成微信 6.3.22.zip, 此处会有一个提示, 问你是否确定修改扩展名, 点击使用.zip即可

c:直接双击zip进行解压, 打开解压好的文件夹, 进入Payload文件夹 此时, 就拿到了大多数的资源. 包括css, js, 图片, MP3/4, 字体,xib等等资源

d:取Assets.car中的资源 (工具下载地址: http://pan.baidu.com/s/1kUVAT7p 提取密码: qrt5)

e:我们在上面的E步骤所在的文件夹处搜索Assets.car即可 直接将Assets.car拖入其中即可, 对, 拖进去就行了,点击start, 完成后, 点击Output Dir即可( iOS APP中所有资源 =  Assets.car +  .api文件解压)

IOS开发基础知识--碎片43的更多相关文章

  1. IOS开发基础知识碎片-导航

    1:IOS开发基础知识--碎片1 a:NSString与NSInteger的互换 b:Objective-c中集合里面不能存放基础类型,比如int string float等,只能把它们转化成对象才可 ...

  2. IOS开发基础知识--碎片33

    1:AFNetworking状态栏网络请求效果 直接在AppDelegate里面didFinishLaunchingWithOptions进行设置 [[AFNetworkActivityIndicat ...

  3. IOS开发基础知识--碎片42

    1:报thread 1:exc_bad_access(code=1,address=0x70********) 闪退 这种错误通常是内存管理的问题,一般是访问了已经释放的对象导致的,可以开启僵尸对象( ...

  4. IOS开发基础知识--碎片50

      1:Masonry 2个或2个以上的控件等间隔排序 /** * 多个控件固定间隔的等间隔排列,变化的是控件的长度或者宽度值 * * @param axisType 轴线方向 * @param fi ...

  5. IOS开发基础知识--碎片3

    十二:判断设备 //设备名称 return [UIDevice currentDevice].name; //设备型号,只可得到是何设备,无法得到是第几代设备 return [UIDevice cur ...

  6. IOS开发基础知识--碎片11

    1:AFNetwork判断网络状态 #import “AFNetworkActivityIndicatorManager.h" - (BOOL)application:(UIApplicat ...

  7. IOS开发基础知识--碎片14

    1:ZIP文件压缩跟解压,使用ZipArchive 创建/添加一个zip包 ZipArchive* zipFile = [[ZipArchive alloc] init]; //次数得zipfilen ...

  8. IOS开发基础知识--碎片16

    1:Objective-C语法之动态类型(isKindOfClass, isMemberOfClass,id) 对象在运行时获取其类型的能力称为内省.内省可以有多种方法实现. 判断对象类型 -(BOO ...

  9. IOS开发基础知识--碎片19

    1:键盘事件顺序 UIKeyboardWillShowNotification // 键盘显示之前 UIKeyboardDidShowNotification // 键盘显示完成后 UIKeyboar ...

随机推荐

  1. html规范

    1 前言 HTML 作为描述网页结构的超文本标记语言,在百度一直有着广泛的应用.本文档的目标是使 HTML 代码风格保持一致,容易被理解和被维护. 2 代码风格 2.1 缩进与换行 [强制] 使用 4 ...

  2. php变量-单引号不编译,双引号编译

    <?php header("Content-type:text/html;charset='utf8'"); error_reporting(E_ALL); $sTemp = ...

  3. ios UIWebView 在开发中加载文件

    UIWebView 在实际应用中加载文件的时候,有两种情况, 1. 实行在线预览 , 2. 下载到本地,再查看 如果是第一种情况: NSURL *url = [NSURL URLWithString: ...

  4. 相克军_Oracle体系_随堂笔记006-日志原理

    简单来说,学习Oracle数据库就两个目标: 保证数据库数据的一致性: 提高数据库的性能(这个和日志没关系).   日志的功能:     只是保证数据库数据的一致性:   1.Oracle日志原理   ...

  5. css3鼠标悬停图片渐显飞入效果

    body程序: <div id="bei"> <div id="img"><img src="xianzi.png&qu ...

  6. Visual Studio 2013中因SignalR的Browser Link引起的Javascript错误一则

    众所周知Visual Studio 2013中有一个由SignalR机制实现的Browser Link功能,意思是开发人员可以同时使用多个浏览器进行调试,当按下IDE中的Browser Link按钮后 ...

  7. 进一步丰富和简化表单管理的组件:form.js

    上文<简洁易用的表单数据设置和收集管理组件>介绍了我自己的表单管理的核心内容,本文在上文的基础上继续介绍自己关于表单初始值获取和设置以及表单数据提交等内容方面的做法,上文的组件粒度很小,都 ...

  8. JAVA keytool 使用详解

      Keytool是一个Java数据证书的管理工具 ,Keytool将密钥(key)和证书(certificates)存在一个称为keystore的文件中在keystore里,包含两种数据: 密钥实体 ...

  9. C#无限极分类树-创建-排序-读取 用Asp.Net Core+EF实现之方法二:加入缓存机制

    在上一篇文章中我用递归方法实现了管理菜单,在上一节我也提到要考虑用缓存,也算是学习一下.Net Core的缓存机制. 关于.Net Core的缓存,官方有三种实现: 1.In Memory Cachi ...

  10. Asp.net 面向接口可扩展框架之“Mvc扩展框架及DI”

    标题“Mvc扩展框架及DI”有点绕口,我也想不出好的命名,因为这个内容很杂,涉及多个模块,但在日常开发又密不可分 首先说Mvc扩展框架,该Mvc扩展就是把以前的那个Mvc分区扩展框架迁移过来,并优化整 ...