iOS 开发小技巧

-(UIImage*) OriginImage:(UIImage *)image scaleToSize:(CGSize)size
{
    UIGraphicsBeginImageContext(size);  //size 为CGSize类型,即你所需要的图片尺寸
    [image drawInRect:CGRectMake(0, 0, size.width, size.height)];  
    UIImage* scaledImage = UIGraphicsGetImageFromCurrentImageContext();  
    UIGraphicsEndImageContext();  
    
    return scaledImage;   //返回的就是已经改变的图片
}

iOS等比缩放图片

 

 

iOS ScrollView中根据滚动距离来判断当前页数

ScrollView中通过当前滚动的相对距离contentOffset属性除以页面宽度来获取当前页数,主要用于滚动视图时让导航栏按钮或标题同步切换;

//pagecontroll的委托方法

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    //ScrollView中根据滚动距离来判断当前页数
    int page = (int)scrollView.contentOffset.x/scrollView.JK_width+0.5;
    
    // 设置页码
    self.pageControl.currentPage = page;
    self.pageControl.numberOfPages =_regionalArr.count%3==0?_regionalArr.count/3:1+_regionalArr.count/3;//指定页面个数
}

iOS 向下取整、向上取整、四舍五入

向上取整:float ceilf(float);    double ceil(double);

向下取整:float floorf(float);   double floor(double);

四舍五入:float roundf(float);  double round(double);

 

iOS判断当前控制器是否正在显示

1

2

3

4

+(BOOL)isCurrentViewControllerVisible:(UIViewController *)viewController

{

    return (viewController.isViewLoaded && viewController.view.window);

}

也可以将该方法定义在UIViewController的分类中, 方便多处调用

 

假如一个UIView对象当前正在显示,那么它的window属性肯定为非空值。

虽然官方文档未说明UIView未显示时window属性的取值,但是经过简单的测试,大部分情况下UIView未显示时,

window的值为空,因此依据此判断当前UIViewController是否正在显示。但是访问UIViewController的view属性时,

可能会引起view加载(假如此时还未加载),这是不必要的,而且还可能引起无法预期的问题。因此在访问view属性之前,最好先检查isViewLoaded属性来避免上述问题。

iOS 判断程序在前台还是后台运行

UIApplicationState state = [UIApplication sharedApplication].applicationState;

BOOL result = (state ==UIApplicationStateBackground);

NSLog(@"是后台运行: %@",result?@"YES":@"NO");

UIApplicationState state2 = [UIApplication sharedApplication].applicationState;  

BOOL result2 = (state2 ==UIApplicationStateActive);

NSLog(@"是前台运行: %@",result2?@"YES":@"NO");

iOS UIView 添加背景图片

UIView 添加背景图片:

第一种方法(不推荐):

用的UIView的设置背景颜色方法,用图片做图案颜色,然后传给背景颜色。

[self.view setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@”“]]];

这种方法是最简单的,但是,存在的问题也比较:

首先,[UIImage imageNamed:@”“] 会产生缓存,它存入内存中的图片不会自动释放。

第二,界面显示的图片不全的问题(我们使用的都是逻辑点,那么它的坐标范围是320X480,但是所使用的设备的像素分辨率不一定320X480, 
如iPhone4的屏幕分辨率就是640X960,如果按照像素分辨率来看的话,iPhone4的的屏幕会 装下 4张320X480的图片,但是iOS针对这种情况 
进行了处理,那就是使用逻辑点代替了像素点,那么现在我们看到的iPhone加载的图还是320X480的,可以覆盖全屏。)。

第二种方法(可以)

在view上面添加一个UIImageView:

UIImageView* imageView = [[UIImageView alloc] initWithFrame:view.bounds]; 
imageView.image = [[UIImage imageNamed:@”name.png”] stretchableImageWithLeftCapWidth:left topCapHeight:top]; 
[view addSubview:imageView];

这种方法在view释放后,内存中的东西也会释放。

第三种方法(推荐)quartzCore方式:

UIImage *image = [UIImage imageNamed:@”name.png”]; 
view.layer.contents = (id) image.CGImage; 
// 如果需要背景透明加上下面这句 
view.layer.backgroundColor = [UIColor clearColor].CGColor;
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值