天天看點

iOS 開發小技巧iOS ScrollView中根據滾動距離來判斷目前頁數iOS 向下取整、向上取整、四舍五入iOS判斷目前控制器是否正在顯示iOS 判斷程式在前台還是背景運作iOS UIView 添加背景圖檔

-(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(@"是背景運作: %@",[email protected]"YES":@"NO");

UIApplicationState state2 = [UIApplication sharedApplication].applicationState;  

BOOL result2 = (state2 ==UIApplicationStateActive);

NSLog(@"是前台運作: %@",[email protected]"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;