分类
IOS开发

IOS计算文本大小

计算文本所占空间大小,已解决UILabel内容自适应的问题。经测试下面代码可用:

/**
 *  计算文本的宽高
 *  @param str     需要计算的文本
 *  @param font    文本显示的字体
 *  @param maxSize 文本显示的范围
 *  @return 文本占用的真实宽高
 */
- (CGSize)sizeWithString:(NSString *)str font:(UIFont *)font maxSize:(CGSize)maxSize
{
    NSDictionary *dict = @{NSFontAttributeName : font};
    // 如果将来计算的文字的范围超出了指定的范围,返回的就是指定的范围
    // 如果将来计算的文字的范围小于指定的范围, 返回的就是真实的范围
    CGSize size =  [str boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size;
    return size;
}
分类
IOS开发

UITabbarcontroller实现点击某个指定的tabbaritem后不跳转

1、UIViewController继承UITabbarcontroller
2、实现协议UITabBarControllerDelegate
3、设置协议

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view.
    self.delegate = self;
}

4、实现协议方法

-(BOOL)tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController{
    if (/*满足一个条件时,不跳转,返回NO*/) {
        return NO;
    }
    return YES;
}
分类
IOS开发

NSArray转成json字符串

NSString *jsonArray = @"";
NSMutableArray *array = [[NSMutableArray alloc] init];
for (int i=0; i<10; i++) {
    NSMutableDictionary *dict = [[NSMutableDictionary alloc] init];
    dict[@"id"] = [NSNumber numberWithInt:i];
    [array addObject:dict];
}
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:array options:NSJSONWritingPrettyPrinted error:nil];
jsonArray = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];

jsonArray即为array转成的字符串。

分类
IOS开发

关闭多个UIViewController时报异常:Trying to dismiss the presentation controller while transitioning already

关闭多个UIViewController时报异常,google了下,用下面代码可以避免,具体原因可能是关闭一个UIViewController影响到了其他的UIViewController,所以需要关闭了以后再关闭另一个,不能使用循环一下同时关闭多个,不知对不对,还请高手指教。上代码:
//这个是我定义的数组,放了多个需要关闭的UIViewController

@property(nonatomic, strong)NSMutableArray *viewControllers;

-(void)dismissViewControllerAll{
    if (_viewControllers != nil && _viewControllers.count>0) {
        UIViewController *controller = [_viewControllers lastObject];
        NSLog(@"dismissViewControllerAll controller=%@", controller);
        if (controller != nil) {
            [controller dismissViewControllerAnimated:NO completion:^{//不用此种方式,会异常:Trying to dismiss the presentation controller while transitioning already
                [_viewControllers removeObject:controller];
                [self dismissViewControllerAll];
            }];
        }else{
            [_viewControllers removeObject:controller];
            [self dismissViewControllerAll];
        }
    }
}
分类
IOS开发

UICollectionView使用代码选中或者取消选中某个元素

1、选中某个元素:
[_collectionView selectItemAtIndexPath:indexPath animated:NO scrollPosition:UICollectionViewScrollPositionNone];
cell.selected = YES;
[self collectionViewDidSelectItem:cell];//自定义选中样式,上面的两行代码必须都加上。这个是自定义方法,因为上面的方法不会自动触发代理方法:didSelectItemAtIndexPath
2、取消选中某个元素
[_collectionView deselectItemAtIndexPath:indexPath animated:NO];
cell.selected = NO;
[self collectionViewDidDeselectItem:cell];//自定义非选中样式,上面的两行代码必须都加上。这个是自定义方法,因为上面的方法不会自动触发代理方法:didDeselectItemAtIndexPath

分类
IOS开发

UITableView默认选中第一行

UITableView默认选中第一行,代码如下:
NSIndexPath *indexPath=[NSIndexPath indexPathForRow:0 inSection:0];
[_tableView selectRowAtIndexPath:indexPath animated:NO scrollPosition:UITableViewScrollPositionNone];
注意,调用以上方法并不会自动触发代理方法:
-(void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath。

分类
IOS开发

IOS开发中集成百度地图2.9.1需要注意的问题

1、info.plist文件需要添加如下内容:

        NSAppTransportSecurity
	
		NSAllowsArbitraryLoads
		
	
	CFBundleDisplayName
	天空农场
	NSLocationWhenInUseUsageDescription
	

baidumapplist

分类
IOS开发

动态计算UITableView每一行的高度

开发中可能会遇到UITableView每一行的高度不一样,可以根据每行不通的内容返回不同高度,修改UITableViewDelegate代理方法如下:
– (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
UITableViewCell *cell = [self tableView:tableView cellForRowAtIndexPath:indexPath];
return cell.frame.size.height;
}

分类
IOS开发

设置UIImageView为圆角

开发中需要设置用户头像显示为圆角,代码如下:
headimg.layer.masksToBounds=YES;
headimg.layer.cornerRadius=headimg.frame.size.width/2.0f; //设置为图片宽度的一半出来为圆形
headimg.layer.borderWidth=2.0f; //边框宽度
headimg.layer.borderColor=[[UIColor whiteColor] CGColor];//边框颜色

分类
IOS开发

UITabBarController使用代码跳转元素

项目需要,一个界面中有一个按钮,点击可以切换tabBarController的子界面,代码如下,记录下:

    [self.tabBarController setSelectedIndex:2];

原创内容转载请保留出处GEEK笔记(http://www.geekapp.cn/)。

分类
IOS开发

storyboard界面跳转

    UIStoryboard *secondStroyBoard=[UIStoryboard storyboardWithName:@"LoginRegister" bundle:nil];
    UIViewController *login=[secondStroyBoard instantiateViewControllerWithIdentifier:@"login"];
    [self presentViewController:login animated:YES completion:nil];

说明:
1、@”LoginRegister”为Storyboard文件名
2、@”login”为Storyboard id

原创内容转载请保留出处GEEK笔记(http://www.geekapp.cn/)。