Mako Shan

Mako 是一名密码朋克爱好者
这里是我记录生活和成长的地方

联系我的微信号
👏欢迎一起交流学习

OC Tip

判断Iphone5

 ([UIScreen instancesRespondToSelector:@selector(currentMode)] ? CGSizeEqualToSize(CGSizeMake(640, 1136), [[UIScreen mainScreen] currentMode].size) : 0)

隐藏键盘,可以调用textfield的endediting事件

[[UIApplication sharedApplication].keyWindow endEditing:YES];

NSNotification发布监听

[[NSNotificationCenter defaultCenter] postNotificationName:[NSString]
                                                    object:[NSObject]];

监听事件

[[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(:)
                                                 name:[NSString]
                                               object:nil];

移除监听

[[NSNotificationCenter defaultCenter] removeObserver:self
                    name:notifi_selected_city
                                      object:nil];

获取notification中附带的object

NSDictionary *Dic = [notification object];

关于继承SuperClass中的代理方法,在SonClass中重写,SonClassController的代理方法会覆盖SuperClass的代理方法。需要用[Super Function]来调用。

字体阴影设置

button.titleLabel.shadowOffset = CGSizeMake(0, 1);
button.titleLabel.shadowColor = [UIColor blackColor];
button.titleLabel.layer.shadowOpacity = 0.3f;

画面渐淡消失

-(void)closeView
{
    [UIView animateWithDuration:1.5 animations:^{
        self.alpha = 0;
        self.transform = CGAffineTransformMakeScale(1.2, 1.2);
    } completion:^(BOOL finished) {
        [self removeFromSuperview];
    }];
}

获取App版本号

[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];

代理的实现

@class delegateClass;@protocol protocolName <NSObject>
     - (void)image;
@end@property(assign,nonatomic) id<protocolName> delegate;

从Storyboard获取view

 UIStoryboard* story = [UIStoryboard storyboardWithName:@"main" bundle:nil];
 className* class = (className*)[story instantiateViewControllerWithIdentifier:@"className"];

关于NSTimerNSTimer

暂停
[countTime setFireDate:[NSDate distantFuture]];
继续
[countTime setFireDate:[NSDate date]];

UIImagePickerController类使用

//跳转到照相界面
UIImagePickerController* imagePicker = [[UIImagePickerController alloc] init];
imagePicker.delegate = self;
imagePicker.sourceType = UIImagePickerControllerSourceTypeCamera;
imagePicker.modalTransitionStyle = UIModalTransitionStyleCoverVertical;
[self presentViewController:imagePicker animated:YES completion:nil];

//代理方法,获得image
-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
if (picker.sourceType == UIImagePickerControllerSourceTypeCamera) {
    image = [info objectForKey:UIImagePickerControllerOriginalImage]
} else {
    image = [info objectForKey:UIImagePickerControllerEditedImage];
}

NavigationController的按钮

UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:_rightButton];
self.navigationItem.rightBarButtonItem = rightItem;

计算字符串的高度和长度

//长度
CGSize sizeName = [strText sizeWithFont:theFont
                              constrainedToSize:CGSizeMake(MAXFLOAT, 0.0)
                                  lineBreakMode:NSLineBreakByWordWrapping];
//高度CGSize sizeName = [strText sizeWithFont:theFont
                              constrainedToSize:CGSizeMake(100.0, MAXFLOAT)
                                  lineBreakMode:NSLineBreakByWordWrapping];

拉伸UIImage讲图片的像素拉到和UIButton一样,UIEdgeInsetsMake()做成的矩形,用来填充不够的像素。

[b setBackgroundImage:[[UIImage imageNamed:selectedName] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 10, 0)]
                         forState:UIControlStateSelected];


设置vidw的layer需要设置
view.layer.clipsToBounds = YES,设置subview的cornerRadius。
StackOverflow上看到的:
Because shadow is an effect done outside the View, and that masksToBounds set to YES will tell the UIView not to draw everything that is outside itself.
If you want a roundedCorner view with shadow I suggest you do it with 2 views:
UIView *view1 = [[UIView alloc] init];
UIView *view2 = [[UIView alloc] init];

view1.layer.cornerRadius = 5.0;
view1.layer.masksToBounds = YES;
view2.layer.cornerRadius = 5.0;
view2.layer.shadowColor = [[UIColor blackColor] CGColor];
view2.layer.shadowOpacity = 1.0;
view2.layer.shadowRadius = 10.0;
view2.layer.shadowOffset = CGSizeMake(0.0f, 0.0f);
[view2 addSubview:view1];
[view1 release];

获取截图

+ (UIImage *)screenshot
{
    CGSize imageSize = [[UIScreen mainScreen] bounds].size;

    if (NULL != UIGraphicsBeginImageContextWithOptions) {
        UIGraphicsBeginImageContextWithOptions(imageSize, NO, 0);
    } else {
        UIGraphicsBeginImageContext(imageSize);
    }

    CGContextRef context = UIGraphicsGetCurrentContext();

    for (UIWindow *window in [[UIApplication sharedApplication] windows]) {
        if (![window respondsToSelector:@selector(screen)] || [window screen] == [UIScreen mainScreen]) {
            CGContextSaveGState(context);

            CGContextTranslateCTM(context, [window center].x, [window center].y);

            CGContextConcatCTM(context, [window transform]);

            CGContextTranslateCTM(context,
                                  -[window bounds].size.width * [[window layer] anchorPoint].x,
                                  -[window bounds].size.height * [[window layer] anchorPoint].y);

            [[window layer] renderInContext:context];

            CGContextRestoreGState(context);
        }
    }

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    return image;
}

压缩图像

NSData *imageData = UIImageJPEGRepresentation(screenshot, .0001);
0
XCode archive不能点击
目录