iOS常用代码段分享
来源:互联网 发布:coc狂暴法术数据 编辑:程序博客网 时间:2024/05/20 07:35
遍历可变数组的同时删除数组元素
1
2
3
4
5
6
7
NSMutableArray *copyArray = [NSMutableArray arrayWithArray:array];
NSString *str1 = @“zhangsan”;
for
(AddressPerson *perName in copyArray) {
if
([[perName name] isEqualToString:str1]) {
[array removeObject:perName];
}
}
获取系统当前语言
1
2
3
4
5
6
7
8
NSString *currentLanguage = [[NSLocale preferredLanguages] objectAtIndex:0];
NSLog(@
"currentlanguage = %@"
,currentLanguage);
if
([currentLanguage containsString:@
"zh-Hans"
]) {
NSLog(@
"zh-Hans简体中文"
);
}
else
if
([currentLanguage containsString:@
"zh-Hant"
]) {
NSLog(@
"zh-Hant繁体中文"
);
}
UITableView的Group样式下顶部空白处理
1
2
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0.1)];
self.tableView.tableHeaderView = view;
UITableView的plain样式下,取消区头停滞效果
1
2
3
4
5
6
7
8
9
10
11
12
- (
void
)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat sectionHeaderHeight = sectionHead.height;
if
(scrollView.contentOffset.y<=sectionHeaderHeight&&scrollView;.contentOffset.y>=0)
{
scrollView.contentInset = UIEdgeInsetsMake(-scrollView.contentOffset.y, 0, 0, 0);
}
else
if
(scrollView.contentOffset.y>=sectionHeaderHeight)
{
scrollView.contentInset = UIEdgeInsetsMake(-sectionHeaderHeight, 0, 0, 0);
}
}
获取某个view所在的控制器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
- (UIViewController *)viewController
{
UIViewController *viewController = nil;
UIResponder *next = self.nextResponder;
while
(next)
{
if
([next isKindOfClass:[UIViewController
class
]])
{
viewController = (UIViewController *)next;
break
;
}
next = next.nextResponder;
}
return
viewController;
}
两种方法删除NSUserDefaults所有记录
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
//方法一
NSString *appDomain = [[NSBundle mainBundle] bundleIdentifier];
[[NSUserDefaults standardUserDefaults] removePersistentDomainForName:appDomain];
//方法二
- (
void
)resetDefaults
{
NSUserDefaults * defs = [NSUserDefaults standardUserDefaults];
NSDictionary * dict = [defs dictionaryRepresentation];
for
(id key in dict)
{
[defs removeObjectForKey:key];
}
[defs synchronize];
}
打印系统所有已注册的字体名称
1
2
3
4
5
6
7
8
9
10
11
12
void
enumerateFonts()
{
for
(NSString *familyName in [UIFont familyNames])
{
NSLog(@
"%@"
,familyName);
NSArray *fontNames = [UIFont fontNamesForFamilyName:familyName];
for
(NSString *fontName in fontNames)
{
NSLog(@
"\t|- %@"
,fontName);
}
}
}
获取图片某一点的颜色
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
- (UIColor*) getPixelColorAtLocation:(CGPoint)point inImage:(UIImage *)image
{
UIColor* color = nil;
CGImageRef inImage = image.CGImage;
CGContextRef cgctx = [self createARGBBitmapContextFromImage:inImage];
if
(cgctx == NULL) {
return
nil;
/* error */
}
size_t
w = CGImageGetWidth(inImage);
size_t
h = CGImageGetHeight(inImage);
CGRect rect = {{0,0},{w,h}};
CGContextDrawImage(cgctx, rect, inImage);
unsigned
char
* data = CGBitmapContextGetData (cgctx);
if
(data != NULL) {
int
offset = 4*((w*round(point.y))+round(point.x));
int
alpha = data[offset];
int
red = data[offset+1];
int
green = data[offset+2];
int
blue = data[offset+3];
color = [UIColor colorWithRed:(red/255.0f) green:(green/255.0f) blue:
(blue/255.0f) alpha:(alpha/255.0f)];
}
CGContextRelease(cgctx);
if
(data) {
free
(data);
}
return
color;
}
字符串反转
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//第一种:
- (NSString *)reverseWordsInString:(NSString *)str
{
NSMutableString *newString = [[NSMutableString alloc] initWithCapacity:str.length];
for
(NSInteger i = str.length - 1; i >= 0 ; i --)
{
unichar ch = [str characterAtIndex:i];
[newString appendFormat:@
"%c"
, ch];
}
return
newString;
}
//第二种:
- (NSString*)reverseWordsInString:(NSString*)str
{
NSMutableString *reverString = [NSMutableString stringWithCapacity:str.length];
[str enumerateSubstringsInRange:NSMakeRange(0, str.length) options:NSStringEnumerationReverse | NSStringEnumerationByComposedCharacterSequences usingBlock:^(NSString *substring, NSRange substringRange, NSRange enclosingRange,
BOOL
*stop) {
[reverString appendString:substring];
}];
return
reverString;
}
禁止锁屏
1
2
3
4
//第一种
[UIApplication sharedApplication].idleTimerDisabled = YES;
//第二种
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
模态推出透明界面
1
2
3
4
5
6
7
8
9
10
11
12
13
UIViewController *vc = [[UIViewController alloc] init];
UINavigationController *na = [[UINavigationController alloc] initWithRootViewController:vc];
if
([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
na.modalPresentationStyle = UIModalPresentationOverCurrentContext;
}
else
{
self.modalPresentationStyle=UIModalPresentationCurrentContext;
}
[self presentViewController:na animated:YES completion:nil];
iOS跳转到App Store下载应用评分
1
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@
"itms-apps://itunes.apple.com/WebObjects/MZStore.woa/wa/viewContentsUserReviews?type=Purple+Software&id=APPID"
]];
手动更改iOS状态栏的颜色
1
2
3
4
5
6
7
8
9
- (
void
)setStatusBarBackgroundColor:(UIColor *)color
{
UIView *statusBar = [[[UIApplication sharedApplication] valueForKey:@
"statusBarWindow"
] valueForKey:@
"statusBar"
];
if
([statusBar respondsToSelector:@selector(setBackgroundColor:)])
{
statusBar.backgroundColor = color;
}
}
判断当前ViewController是push还是present的方式显示
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
NSArray *viewcontrollers=self.navigationController.viewControllers;
if
(viewcontrollers.count > 1)
{
if
([viewcontrollers objectAtIndex:viewcontrollers.count - 1] == self)
{
//push方式
[self.navigationController popViewControllerAnimated:YES];
}
}
else
{
//present方式
[self dismissViewControllerAnimated:YES completion:nil];
}
获取实际使用的LaunchImage图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
- (NSString *)getLaunchImageName
{
CGSize viewSize = self.window.bounds.size;
// 竖屏
NSString *viewOrientation = @
"Portrait"
;
NSString *launchImageName = nil;
NSArray* imagesDict = [[[NSBundle mainBundle] infoDictionary] valueForKey:@
"UILaunchImages"
];
for
(NSDictionary* dict in imagesDict)
{
CGSize imageSize = CGSizeFromString(dict[@
"UILaunchImageSize"
]);
if
(CGSizeEqualToSize(imageSize, viewSize) && [viewOrientation isEqualToString:dict[@
"UILaunchImageOrientation"
]])
{
launchImageName = dict[@
"UILaunchImageName"
];
}
}
return
launchImageName;
}
iOS在当前屏幕获取第一响应
1
2
UIWindow * keyWindow = [[UIApplication sharedApplication] keyWindow];
UIView * firstResponder = [keyWindow performSelector:@selector(firstResponder)];
判断对象是否遵循了某协议
1
2
3
4
if
([self.selectedController conformsToProtocol:@protocol(RefreshPtotocol)])
{
[self.selectedController performSelector:@selector(onTriggerRefresh)];
}
判断view是不是指定视图的子视图
BOOL isView = [textView isDescendantOfView:self.view];
NSArray 快速求总和 最大值 最小值 和 平均值
1
2
3
4
5
6
NSArray *array = [NSArray arrayWithObjects:@
"2.0"
, @
"2.3"
, @
"3.0"
, @
"4.0"
, @
"10"
, nil];
CGFloat sum = [[array valueForKeyPath:@
"@sum.floatValue"
] floatValue];
CGFloat avg = [[array valueForKeyPath:@
"@avg.floatValue"
] floatValue];
CGFloat max =[[array valueForKeyPath:@
"@max.floatValue"
] floatValue];
CGFloat min =[[array valueForKeyPath:@
"@min.floatValue"
] floatValue];
NSLog(@
"%f\n%f\n%f\n%f"
,sum,avg,max,min);
修改UITextField中Placeholder的文字颜色
[textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
获取一个类的所有子类
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
+ (NSArray *) allSubclasses
{
Class myClass = [self
class
];
NSMutableArray *mySubclasses = [NSMutableArray array];
unsigned
int
numOfClasses;
Class *classes = objc_copyClassList(&numOfClasses;);
for
(unsigned
int
ci = 0; ci < numOfClasses; ci++)
{
Class superClass = classes[ci];
do
{
superClass = class_getSuperclass(superClass);
}
while
(superClass && superClass != myClass);
if
(superClass)
{
[mySubclasses addObject: classes[ci]];
}
}
free
(classes);
return
mySubclasses;
}
阿拉伯数字转中文格式
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
+(NSString *)translation:(NSString *)arebic
{
NSString *str = arebic;
NSArray *arabic_numerals = @[@
"1"
,@
"2"
,@
"3"
,@
"4"
,@
"5"
,@
"6"
,@
"7"
,@
"8"
,@
"9"
,@
"0"
];
NSArray *chinese_numerals = @[@
"一"
,@
"二"
,@
"三"
,@
"四"
,@
"五"
,@
"六"
,@
"七"
,@
"八"
,@
"九"
,@
"零"
];
NSArray *digits = @[@
"个"
,@
"十"
,@
"百"
,@
"千"
,@
"万"
,@
"十"
,@
"百"
,@
"千"
,@
"亿"
,@
"十"
,@
"百"
,@
"千"
,@
"兆"
];
NSDictionary *dictionary = [NSDictionary dictionaryWithObjects:chinese_numerals forKeys:arabic_numerals];
NSMutableArray *sums = [NSMutableArray array];
for
(
int
i = 0; i < str.length; i ++) {
NSString *substr = [str substringWithRange:NSMakeRange(i, 1)];
NSString *a = [dictionary objectForKey:substr];
NSString *b = digits[str.length -i-1];
NSString *sum = [a stringByAppendingString:b];
if
([a isEqualToString:chinese_numerals[9]])
{
if
([b isEqualToString:digits[4]] || [b isEqualToString:digits[8]])
{
sum = b;
if
([[sums lastObject] isEqualToString:chinese_numerals[9]])
{
[sums removeLastObject];
}
}
else
{
sum = chinese_numerals[9];
}
if
([[sums lastObject] isEqualToString:sum])
{
continue
;
}
}
[sums addObject:sum];
}
NSString *sumStr = [sums componentsJoinedByString:@
""
];
NSString *chinese = [sumStr substringToIndex:sumStr.length-1];
NSLog(@
"%@"
,str);
NSLog(@
"%@"
,chinese);
return
chinese;
}
取消UICollectionView的隐式动画
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//方法一
[UIView performWithoutAnimation:^{
[collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];
}];
//方法二
[UIView animateWithDuration:0 animations:^{
[collectionView performBatchUpdates:^{
[collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];
} completion:nil];
}];
//方法三
[UIView setAnimationsEnabled:NO];
[self.trackPanel performBatchUpdates:^{
[collectionView reloadItemsAtIndexPaths:@[[NSIndexPath indexPathForItem:index inSection:0]]];
} completion:^(
BOOL
finished) {
[UIView setAnimationsEnabled:YES];
}];
判断邮箱格式是否正确的代码
1
2
3
4
5
6
7
8
9
10
11
-(
BOOL
)isValidateEmail:(NSString *)email
{
NSString *emailRegex = @
"[A-Z0-9a-z._%+-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,4}"
;
NSPredicate *emailTest = [NSPredicate predicateWithFormat:@
"SELF MATCHES%@"
,emailRegex];
return
[emailTest evaluateWithObject:email];
}
iOS中UITextField的字数限制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//在viewDidLoad中注册<UITextFieldTextDidChangeNotification>通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textFiledEditChanged:)
name:@
"UITextFieldTextDidChangeNotification"
object:myTextField];
//实现监听方法
#pragma mark - Notification Method
-(
void
)textFieldEditChanged:(NSNotification *)obj
{
UITextField *textField = (UITextField *)obj.object;
NSString *toBeString = textField.text;
//获取高亮部分
UITextRange *selectedRange = [textField markedTextRange];
UITextPosition *position = [textField positionFromPosition:selectedRange.start offset:0];
// 没有高亮选择的字,则对已输入的文字进行字数统计和限制
if
(!position)
{
if
(toBeString.length > MAX_STARWORDS_LENGTH)
{
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:MAX_STARWORDS_LENGTH];
if
(rangeIndex.length == 1)
{
textField.text = [toBeString substringToIndex:MAX_STARWORDS_LENGTH];
}
else
{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, MAX_STARWORDS_LENGTH)];
textField.text = [toBeString substringWithRange:rangeRange];
}
}
}
}
阅读全文
0 0
- iOS常用代码段分享
- ios 手势 常用代码段代码段
- iOS开发常用代码,经验分享。
- 常用java代码段
- 常用ASP代码段
- VC常用代码段
- 常用代码段集锦
- javascript常用代码段
- Java常用代码段
- Android常用代码段
- Extjs常用代码段
- 常用android代码段
- VC++常用代码段
- 常用lua代码段
- SQLServer常用代码段
- JDBC常用代码段
- Android常用代码段
- JavaScript常用代码段
- 【LeetCode】210. Course Schedule II
- 深入理解UE4宏定义—— GENERATED_BODY
- Flutter进阶—实现动画效果(十)
- Android本地程序的printf输出到logcat中
- 安卓开发:自定义PopupWindow,实现模仿iOS底部弹出菜单
- iOS常用代码段分享
- C# redis操作
- Android布局(1)
- Java25
- YYHS1619(tyvj 1050)
- 算法导论 思考题 15-8(基于接缝裁剪的图像压缩)
- Java26
- Java27
- Codevs1732 Fibonacci数列2