iOS-常見問題

 

問題一:

咱們在寫程序的時候,屏幕的寬高咱們不能寫固定,例如寫成320,480之類的,由於咱們要適配不一樣的手機。經常使用的一種方法是在 .pch文件中設置寬高,由於.pch是一個預編譯文件,在全局都能訪問到。html

#define ScreenHeight [UIScreen mainScreen].bounds.size.hight;ios

#define ScreenWidth [UIScreen mainScreen].bounds.size.width;windows

問題二:

這個問題比較簡單,徹底算不上技巧,可是有時咱們會忽略這個用法。就是給UIView設置背景圖片。數組

_tabbarView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"tabbar_background.png"]];網絡

問題三:

咱們的圖片是方形的,咱們想讓它以圓形或者橢圓相似的形狀在界面上顯示。app

_image = [[UIImageView alloc]initWithFrame:CGRectMake(0,0,80,80)];async

_image.layer.cornerRadius = 40;//大小不一樣,形狀不一樣ide

_image.clipsToBounds = YES;函數

問題四:

如何獲取主窗口的三種方法。ui

UIApplication *app=[UIApplication shareApplication];

1,UIWindow *window = app.keyWindow;

2,UIWindow *window = app.delegate.window;

3,UIWindow *window = [app.windows objectAtIndex:0];

固然咱們也可使用連寫的方法:好比:UIWindow *window = [UIApplication shareApplication].delegate.window;

問題五:

咱們有時候不當心修改了系統的API,或者其它的一些操做,出現瞭如下問題該怎麼辦?

錯誤信息:fatal error :file /Application ……….

Note: after modifying system headers, please delete the module cache at /Users  …..

解決辦法:前往/Users….這個文件夾,刪除裏面的文件,而後clean一下程序便可解決.

技巧五:

咱們如何讓定時器暫停和開始,並非開啓和關閉。

NSTimer *timer = [NSTimer sch……];

[timer setFireDate :[NSDate distantFuture]];//暫停

[timer setFireDate :[NSDate distantPass]]//開始

問題六:

咱們彈出的鍵盤一般都是字母鍵盤,如何彈出數字鍵盤。

Textfiled.keyboardType = UIKeyboardTypeNumberPad;

問題七:

在網絡請求中,若是請求體中有漢字的話,請求會出錯,怎樣解決?

假設請求體爲:NSString *urlString= @「http://v.juhe.cn/weather/index?cityname=北京」;

由於有漢字字符,請求會出錯。處理辦法:

urlString = [urlString stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];

問題八:

如何讓咱們的圖片放大不變形。

_image = [[UIImage imageNamed:@"a.png"]stretchableImageWithLeftCapWidth:20 topCapHeight:10];

問題九:

ARC和非ARC混編。

若是你的項目中使用的是非ARC,導入的ARC代碼的文件,須要在ARC模式的文件代碼中加入-fobjc-arc標籤

若是你的項目中使用的是ARC模式,則爲非ARC模式的代碼文件加入-fno-objc-arc標籤

添加標籤方法:target->build phases->compile sources  ,雙擊對應的 .m文件,在彈出框中輸入標籤。 

問題十:

在自定義xib中cell的時候,UIImageView的圖形跟定義的大小不匹配,可能按照原圖片顯示。

可能出現的問題是:UIImageView的命名爲imageView,這個名字和系統的名字衝突,圖片不能按預期的顯示。

問題十一:

uitableview代理不調用。

常見的是沒有設置代理。

還有一種狀況是繼承錯誤,通常來講是繼承UIViewController,若是繼承關係寫錯,代理方法不會調用。我當時還出現了一下錯誤。

Two-stage rotation animation is deprecated. This application should use the smoother single-stage animation

問題十二:

如何找到xib上的view,可能有多個,能夠用數組接收。

NSArray *nib = [[NSBundle mainBundle]loadNibNamed:@"CustomView" owner:self options:nil];  

//獲得第一個UIView  

UIView *tmpCustomView = [nib objectAtIndex:0];  

問題十三:

根據文字內容,肯定文字佔的區域大小。

CGRect rect = [str boundingRectWithSize:CGSizeMake(300, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15]} context:nil];


問題十四:

在UIButton上添加一個UIView,會使得UIButton的點擊事件不能響應,解決辦法是將UIView的可交互性改成NO.

 

 問題十五:

若是界面中有ScrollView,而且界面中有導航條,視圖控制器會默認給scrollview設置一個64偏移。

咱們可使用self.automaticallAdjustsScrollViewInsets = NO,scrollview不會偏移。

tabbar高度49,導航加狀態欄高度64.

 

問題十六:

咱們可使用下面的方法打印出所在的類,和函數:

NSLog(@"%s",__FUNCTION__);

問題十七:

//字面量基本寫法:
//    NSString *str = @"123";
//    NSDictionary *dict = @{@"name":@"wyg",@"age":@"12",@"sex":@"boy"};
//    NSArray *arr = @[@"1",@"2"];
//    NSString *st = arr[1];
//    NSNumber *intNumber = @123;
//    NSNumber *boolNumber = @NO;

 

問題十八:

在建立了UIScrollView的時候,打印其subViews,發現多了兩個,是由於將水平條和垂直條加上了,將其屬性設置爲NO便可。
 

問題十九:

將導航控制器中,視圖從下面的座標設爲(0,0)

   if ([self respondsToSelector:@selector(setEdgesForExtendedLayout:)]) {
        self.edgesForExtendedLayout = UIRectEdgeNone;
    }

 

問題二十:

父視圖透明度對子視圖無效設置:

    maskView.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0.4];

問題二十一:

UITextField動態監聽值變化:

        [myTextField addTarget:self action:@selector(textFieldChange:) forControlEvents:UIControlEventEditingChanged];

        -(void)textFieldChange:(UITextField *)textField
        {
              NSLog(@"print:%@",textField.text);
         }

問題二十二:

這段代碼,本身體會

     dispatch_async(dispatch_get_main_queue(), ^{
         totalArray = arrayRes;
        [addressbookTable reloadData];
     });

問題二十三:

IQKeyboardManager將Done改成完成,而且去掉中間佔位提示符

    [[IQKeyboardManager sharedManager]setToolbarDoneBarButtonItemText:@"完成"];
    [[IQKeyboardManager sharedManager] setShouldShowTextFieldPlaceholder:NO];

問題二十四:

  iPhone5是32位系統,iPhone5以上位64位系統,若是數字位數比較多,例如一個精度比較高的時間戳,在處理數據的時候,在iPhone5上可能到致使問題。

 

問題二十五:

建立Podfile:

touch Podfile

安裝文件:

pod install --verbose --no-repo-update

Podfile文件樣式:

platform :ios, '8.0'
inhibit_all_warnings!
use_frameworks!

target :'Kyw' do
pod 'AFNetworking', '~> 3.1.0'
pod 'MJRefresh', '~> 3.1.0'
pod 'MJExtension', '~> 3.0.10'
pod 'RESideMenu', '~>4.0.7'
pod 'TAKUUID', '~>1.1.0'
pod 'IQKeyboardManager', '~> 3.3.6'
pod 'MBProgressHUD', '~> 0.9.2'
pod 'BlocksKit', '~> 2.2.5'
pod 'LTNavigationBar', '~> 2.1.6'
pod 'Masonry', '~> 1.0.0'
pod 'UMengAnalytics'
end

 問題二十六:

在導入charts3.0圖像庫,x軸的數據自定義:

首先遵照IChartAxisValueFormatter代理;

添加(_lineView).xAxis.valueFormatter = self;

實現代理方法:

- (NSString *)stringForValue:(double)value axis:(ChartAxisBase *)axis
{
    return arrayX[(int)value % arrayX.count];
}

問題二十六:

獲取請求的header

    AFHTTPSessionManager *manager = [AFHTTPSessionManager manager];
    manager.responseSerializer = [AFHTTPResponseSerializer serializer];
    manager.responseSerializer.acceptableContentTypes = [NSSet setWithObjects:@"text/html", @"image/gif", nil];

    [manager GET:@"http://meinian.cn/createimage.aspx" parameters:nil progress:nil success:^(NSURLSessionDataTask * _Nonnull task, id  _Nullable responseObject) {
        NSHTTPURLResponse *res = (NSHTTPURLResponse *)task.response;
        NSLog(@"%@",[res allHeaderFields]);    } failure:^(NSURLSessionDataTask * _Nullable task, NSError * _Nonnull error) {        NSLog(@"error:%@",error.description);    }];

相關文章
相關標籤/搜索