- 简单的获取当前时间
// CFAbsoluteTime其实就是double
CFAbsoluteTime time = CFAbsoluteTimeGetCurrent();
- 超出父视图范围的控件部分响应事件
-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent *)event{
UIView* hitView = [super hitTest:point withEvent:event];
if (!hitView) {
CGPoint tempPoint = [_testBtn convertPoint:point fromView:self];
if (CGRectContainsPoint(_testBtn.bounds, tempPoint)) {
hitView = _testBtn;
}
}
return hitView;
}
- 让一个视图始终在最前面
// zPosition给个较大的值
view.layer.zPosition = 999;
- 判断一个view是不是指定view的子视图
BOOL isChildView = [childView isDescendantOfView:parentView];
- 坐标转换
// 将像素point由point所在视图转换到目标视图view中,返回在目标视图view中的像素值
- (CGPoint)convertPoint:(CGPoint)point toView:(UIView *)view;
// 将像素point从view中转换到当前视图中,返回在当前视图中的像素值
- (CGPoint)convertPoint:(CGPoint)point fromView:(UIView *)view;
// 将rect由rect所在视图转换到目标视图view中,返回在目标视图view中的rect
- (CGRect)convertRect:(CGRect)rect toView:(UIView *)view;
// 将rect从view中转换到当前视图中,返回在当前视图中的rect
- (CGRect)convertRect:(CGRect)rect fromView:(UIView *)view;
*例把UITableViewCell中的subview(btn)的frame转换到
controllerA中
// controllerA 中有一个UITableView, UITableView里有多行UITableVieCell,cell上放有一个button
// 在controllerA中实现:
CGRect rc = [cell convertRect:cell.btn.frame toView:self.view];
或
CGRect rc = [self.view convertRect:cell.btn.frame fromView:cell];
// 此rc为btn在controllerA中的rect
或当已知btn时:
CGRect rc = [btn.superview convertRect:btn.frame toView:self.view];
或
CGRect rc = [self.view convertRect:btn.frame fromView:btn.superview];
- 方法的交换
* 实例方法
+ (void)swizzleSelector:(SEL)originalSelector withSelector:(SEL)swizzledSelector {
Class class = [self class];
Method originalMethod = class_getInstanceMethod(class, originalSelector);
Method swizzledMethod = class_getInstanceMethod(class, swizzledSelector);
BOOL didAddMethodInit=class_addMethod(class, originalSelector, method_getImplementation(swizzledMethod), method_getTypeEncoding(swizzledMethod));
if (didAddMethodInit) {
class_addMethod(class, swizzledSelector, method_getImplementation(originalMethod), method_getTypeEncoding(originalMethod));
}else{
method_exchangeImplementations(originalMethod, swizzledMethod);
}
}
*类方法
+ (void)swizzleClassSelector:(SEL)originalSelector withClassSelector:(SEL)swizzledSelector {
Class class = [self class];
Method originalMethod = class_getClassMethod(class, originalSelector);
Method swizzledMethod = class_getClassMethod(class, swizzledSelector);
if ((int)originalMethod != 0 && (int)swizzledMethod != 0) {
method_exchangeImplementations(originalMethod, swizzledMethod);
}
}
- 汉字转拼音
- (NSString *)stringToPinyin
{
if ([self length] > 0) {
NSMutableString *ms = [[NSMutableString alloc] initWithString:self];
if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformMandarinLatin, NO)) {
}
if (CFStringTransform((__bridge CFMutableStringRef)ms, 0, kCFStringTransformStripDiacritics, NO)) {
//NSLog(@"pinyin: %@", ms);
return ms;
}
}
return self;
}