iOS开发基础知识--碎片43

iOS开发基础知识--碎片43

 iOS开发基础知识--碎片43

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(-5);
            make.centerY.mas_equalTo(self).with.offset(0);
            make.size.mas_equalTo(CGSizeMake(Main_Screen_Width-180, 15));
        }];
        [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(-15);
            make.centerY.mas_equalTo(self).with.offset(0);
            make.size.mas_equalTo(CGSizeMake(Main_Screen_Width-180, 15));
        }];
        [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 = 10;
        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文件解压)

时间: 2024-11-07 07:33:40

iOS开发基础知识--碎片43的相关文章

iOS开发基础知识--碎片32

 iOS开发基础知识--碎片32 1:动画属性UIViewAnimationOptions说明 a:常规动画属性设置(可以同时选择多个进行设置) UIViewAnimationOptionLayoutSubviews:动画过程中保证子视图跟随运动. UIViewAnimationOptionAllowUserInteraction:动画过程中允许用户交互. UIViewAnimationOptionBeginFromCurrentState:所有视图从当前状态开始运行. UIViewAnimat

iOS开发基础知识--碎片1

iOS开发基础知识--碎片1  一:NSString与NSInteger的互换 NSInteger转化NSString类型:[NSString stringWithFormat: @"%d", NSInteger]; NSString转化 NSInteger类型:NSInteger = [NSString intValue]; *其它几个同理 [NSString boolValue].[NSString floatValue].[NSString doubleValue] 二:Obje

iOS开发基础知识--碎片3

iOS开发基础知识--碎片3  iOS开发基础知识--碎片3 十二:判断设备 //设备名称 return [UIDevice currentDevice].name; //设备型号,只可得到是何设备,无法得到是第几代设备 return [UIDevice currentDevice].model; //系统版本型号,如iPhone OS return [UIDevice currentDevice].systemVersion; //系统版本名称,如6.1.3 return [UIDevice

iOS开发基础知识--碎片2

iOS开发基础知识--碎片2 六:获得另一个控件器,并实现跳转 UIStoryboard* mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; UIViewController *registerViewController = [mainStoryboard instantiateViewControllerWithIdentifier:@"registerView

iOS开发基础知识--碎片23

iOS开发基础知识--碎片23  1:关于UITableView中关于行重复加载的问题 在Cell里重写prepareForReuse,对一些控件进行清空: 比较简单: -(void)prepareForReuse{ [super prepareForReuse]; _content_label.text = nil; _time_date_label.text = nil; _name_label.text = nil; _career_label.text = nil; } 下面这个是我在c

iOS开发基础知识--碎片21

iOS开发基础知识--碎片21  1:[UIScreen mainScreen].scale知识点 当屏幕分别为640x940时[[UIScreen mainScreen] scale]=2.0 当屏幕分别为320x480时[[UIScreen mainScreen] scale]=1.0 2:如何正确的绘制1像素的线 #define SINGLE_LINE_WIDTH (1 / [UIScreen mainScreen].scale) #define SINGLE_LINE_ADJUST_OF

iOS开发基础知识--碎片24

 iOS开发基础知识--碎片24 1:兼容字体大小6plue跟它以下的区别 #define FONT_COMPATIBLE_SCREEN_OFFSET(_fontSize_) [UIFont systemFontOfSize:(_fontSize_ *([UIScreen mainScreen].scale) / 2)] 在iPhone4~6中,缩放因子scale=2:在iPhone6+中,缩放因子scale=3 运用时: myLabel.font=FONT_COMPATIBLE_SCREEN_

iOS开发基础知识--碎片6

iOS开发基础知识--碎片6  三十三:IOS多视图跳转方法 第一种: 跳转:[self presentModalViewController:control animated:YES]; 返回:[self dismissModalViewControllerAnimated:YES]; 第二种: 跳转:[self.navigationController pushViewController:subTableViewController animated:YES]; 返回:[self.navi

iOS开发基础知识--碎片5

iOS开发基础知识--碎片5  二十三:addSubview和insertSubview 区别 addSubview 是将view加到所有层的最顶层 相当于将insertSubview的atIndex参数设置成view.subviews count 即 [view addSubview:oneview] == [view insertSubview:oneview atIndex:view.subviews count] addSubview是加到最后 insertSubview是加到指定的位置