ios 問題集

1.用UIWebView 加載一個不存在的網址(https://developer.apple),我在加載失敗的事件中,調用 [self.browser stopLoading] 可是,iphone系統上標示網絡的小菊花還老在轉?html

 

2.用選項卡,導航欄作一個主要框架,如何只讓其中的某些view(對應的controller的title爲 selfbrowser browser)支持旋轉?web

 1 //#pragma mark - Rotation UITabBarController category
 2 
 3 @implementation UITabBarController (Rotate)  4 -(BOOL)shouldAutorotate  5 {  6     UINavigationController *vc = (UINavigationController *)self.selectedViewController;  7     
 8     if ([vc isEqual: [self.viewControllers objectAtIndex:0]])  9  { 10         return YES; 11  } 12     return NO; 13 } 14 
15 -(NSUInteger)supportedInterfaceOrientations 16 { 17     UINavigationController *vc = (UINavigationController *)self.selectedViewController; 18     
19     if ([vc isEqual: [self.viewControllers objectAtIndex:0]]) 20  { 21         UIViewController* viewctrl = vc.visibleViewController; 22         if ([viewctrl.title isEqual:@"selfbrowser"] 23             || [viewctrl.title isEqual:@"browser"]) 24  { 25             return UIInterfaceOrientationMaskAllButUpsideDown; 26  } 27  } 28     
29     return UIInterfaceOrientationMaskPortrait; 30 } 31 
32 @end
View Code

3.第2個問題解決了,發現另外一個問題,某一個支持旋轉viewA,她的上一個viewB不支持旋轉,當viewA旋轉後,用導航欄返回時,發現viewB也被旋轉了,不知道如何手工把viewB旋轉回來?網絡

4.如何在app中與嵌入到UIWebView中的web進行必定的交互呢?app

 1 //讓web觸發某個鏈接,app能夠獲得響應
 2 - (BOOL)webView: (UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType  3 {  4     //獲取到對應的鏈接,作邏輯處理
 5     NSString *requestString = [[[request URL] absoluteString] stringByReplacingPercentEscapesUsingEncoding: NSUTF8StringEncoding];  6     
 7     if ([requestString isEqualToString:@"http://qweq.weibo.com/12345678yqlzq"]  8         || [requestString isEqualToString:@"http://192.168.1.50:1834/mobile2/about.html#/mobile2/coupons.html"])  9  { 10  [self.navigationController popViewControllerAnimated:YES]; 11         return NO; 12  } 13     return YES; 14 }
View Code

 5.如何手工建立UIButton?框架

 1     UIButton* btnTry = [UIButton buttonWithType:UIButtonTypeRoundedRect];  2     [btnTry setFrame:CGRectMake(self.view.frame.size.width/2-45, self.view.frame.size.height/2, 90, 40)];  3     [btnTry setBackgroundImage:[[UIImage imageNamed:@"Icon.png"]stretchableImageWithLeftCapWidth:0.0 topCapHeight:0.0] forState:UIControlStateNormal];  4     [btnTry.titleLabel setFont:[UIFont boldSystemFontOfSize:20]];  5     [btnTry setTitle:@"重試" forState:UIControlStateNormal];  6  [btnTry setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];  7     btnTry.backgroundColor = [UIColor clearColor];  8  [btnTry setHidden:YES];  9     [btnTry setTag:55]; 10  [btnTry addTarget:self action:@selector(onBtnTry:) forControlEvents:UIControlEventTouchUpInside]; 11     [view addSubview:btnTry];
View Code

 6.開發者 A 開發一個app項目,如今我須要接手他的項目,(設備iphone,開發者都不同)那麼如何來調試呢?iphone

    進入apple developer網站從新生成一個描述文件,選擇一樣一個app id, 選擇本身的開發賬號,選擇本身的調試設備iPhone5,生成一個新的描述文件。安裝到本身的XCode以及調試設備iphone5上就能夠調試了。ide

7.對工程A,拷貝了一份工程B,而後對B進行編輯,過一段時間後,須要從新在A的基礎上作其它修改,因而對A進行拷貝爲C,運行C,發現有些行爲相似A,有些相似B,設置斷點,有的能夠進入到斷點,有的不能夠,亂套了?字體

  打開C工程=>Product =>Clean,而後關閉C工程,右鍵Xcode,退出,而後重啓XCode,從新運行C工程,就OK了。動畫

8.UIActionSheet最後一個按鈕沒響應,通常是cancelButton,要稍微向上偏移一點才能夠。網站

這是在特定狀況下才會發生,這個場景就是試用了UITabBar的時候纔有。

參考:http://stackoverflow.com/questions/2096852/iphone-weird-bug-between-uiactionsheet-and-uitabbar

解決辦法:

 1 UIActionSheet *action  =
 2 
 3         [[UIActionSheet alloc] initWithTitle:@"您是否撥打"
 4 
 5                                     delegate:self  6 
 7                            cancelButtonTitle:@"取消撥打"
 8 
 9                       destructiveButtonTitle:@"撥打" 
10 
11                            otherButtonTitles:@"加入電話本",nil]; 12 
13         //[action showInView:self.view]; 把這行更換爲下面這個
14 
15  [action showInView:[UIApplication sharedApplication].keyWindow]; 16 
17         [action release]; 
View Code

 

據聞是tabbar恰好在取消按鈕的地方,因此離奇了,不過UIActionSheet是在tabbar上方,很難想象會出現這個問題。

 9.bug -- Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer bounds contains NaN: [0 nan; 320 nan]' 

 開始覺得不是必現的,後來才知道原來是,用到了一個image,而這個image爲nil,代碼中去獲取這個image的大小來計算其它控件的大小,致使了出現上述問題。

10.如何升級已經上線的app

登陸iTunes Connect網站 -->查看該app信息-->add new version-->Prepare for Upload-->Waiting For Upload-->生成Achive而後提交便可

11.如何設置程序圖標及啓動畫面

把相應的 Default.png Default@2x.png Icon.png Icon@2x.png 拷貝到工程,並經過 targets-->summary-->App Icons /launch images 設置便可。

 12.如何隱藏 導航欄

[self.navigationController setNavigationBarHidden:YES animated:NO];

13.如何把一個view放到最頂層

[self.view bringSubviewToFront:mBtnHome];

14.如何設置一個UIView的背景圖片

 

    UIImageView *bgImgView = [[UIImageView alloc] initWithFrame:self.view.bounds]; [bgImgView setImage:[UIImage imageNamed:@"bg.png"]]; [self.view addSubview:bgImgView]; [self.view sendSubviewToBack:bgImgView];

 15.如何指定圖片的拉伸區域

- (UIImage *)resizableImageWithCapInsets:(UIEdgeInsets)capInsets resizingMode:(UIImageResizingMode)resizingMode

UIEdgeInsets類型的參數,

能夠經過設置UIEdgeInsets的left、right、top、bottom來分別指定左端蓋寬度、右端蓋寬度、頂端蓋高度、底端蓋高度

UIImageResizingMode參數,用來指定拉伸的模式:

  • UIImageResizingModeStretch:拉伸模式,經過拉伸UIEdgeInsets指定的矩形區域來填充圖片
  • UIImageResizingModeTile:平鋪模式,經過重複顯示UIEdgeInsets指定的矩形區域來填充圖片
CGFloat top = 25;      //頂端蓋高度
CGFloat bottom = 25 ;   //底端蓋高度
CGFloat left = 10;     //左端蓋寬度
CGFloat right = 10;     //右端蓋寬度
UIEdgeInsets insets = UIEdgeInsetsMake(top, left, bottom, right); // 指定爲拉伸模式,伸縮後從新賦值
image = [image resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch];

 16.在 - (void)viewDidLoad  / - (void)viewWillAppear:(BOOL)animated 獲取子控件的大小位置,結果獲得的所有都是0

  在viewDidLoad以前,視圖控制器的做爲view的outlet不和storyboard鏈接,直到viewWillAppear時,view的體積才被設置。

  這個view的全部維度在layoutSubviews時會被計算和設置,但layoutSubviews是發生在viewWillAppear以後,

  所以,在layoutSubviews以後,才能獲得這個view設置在storyboard中的全部維度值。

 17.延長Default.png顯示的時間

-(Bool)application:(UIApplication *)application didFinishLaunchingWithOptions:  (NSDictionary *)launchOptions { [NSThread sleepForTimeInterval:10]; ............. }

 18.如何指定大小,建立系統字體

UIFont* font = [UIFont systemFontOfSize:12.0f];

 19.我用UIWebView 加載一個url,系統訪問網絡的小圈出現並在轉動,我調用 UIWebView 的 stopLoading,可是系統訪問網絡的小圈仍然在轉動,請問,如何讓系統的小圈消失?

當你的應用程序使用網絡時,應當在iPhone的狀態條上放置一個網絡指示器,警告用戶正在使用網絡。這時你能夠用UIApplication的一個名爲networkActivityIndicatorVisible的屬性。通 過設置這個能夠啓用或禁用網絡指示器:

[ UIApplication  sharedApplication].networkActivityIndicatorVisible = NO;    

有個更好的東西推薦:MBProgressHUD  

 20.code sign error: provisioning profile can't be found

 

  • Shut down Xcode.
  • Back up the project.pbxproj file.
  • Edit the project.pbxproj file and remove lines of instances where it mentions the old provisioning profile.Restart Xcode and perform a full clean of the project.
    • eg. Delete line:
    • PROVISIONING_PROFILE = "8D024EDA-DC05-40DF-B3EB-536392615EE2";
  • It should then build without warnings.
相關文章
相關標籤/搜索