iOS 開發百問(8)


90、找不到 Profile 錯誤“CodeSign error: no provisioning profile at path '/Users/yourname/Library/MobileDevice/ProvisioningProfiles/F87A055A-EC0D-4F19-A015-57AB09DEBECB.mobileprovision'”

在 ProjectNavigator 中選擇你的項目,使用 View ->Version Editor -> Show Version Editor(或者使用工具欄上的“”按鈕)。在當前版本(即 左邊的文本窗格)中編輯,搜索“F87A055A-EC0D-4F19-A015-57AB09DEBECB”字串,然后將所有的“"PROVISIONING_PROFILE[sdk=iphoneos*]" ="F87A055A-EC0D-4F19-A015-57AB09DEBECB";”行刪除。

91、iOS 7 中,導航欄重疊在 ViewController 的 view 之上(即 view 上移了 44 像素)

將導航控制器的 Top Bar 設置為一種“Opacque ...”(不透明)類型。

92、為什么導航欄的righBarButtonItems 顯示的排列順序跟它們加入時的相反?

rightBarButtonItems 中的 item 在加入時是從右向左加入的。

假設我們這樣加入3個按鈕到 rightBarButtonItems 中:

[self.navigationItem setRightBarButtonItems:@[b1,b2,b3]animated:NO]; 則你看到的3個按鈕排列順序為:b3,b2,b1。

93、為什么有時候用 OTA 方式安裝程序后會多出一個“正在安裝...”圖標,並無法刪除該圖標?

該問題只在 iOS 7 下存在。如下圖所示:


其中,“網絡助手”是程序安裝完出現在桌面上的圖標,“正在安裝...”是安裝過程中顯示的圖標,這個圖標在安裝完成后仍然存在,並且用戶無法刪除。

這是由於安裝是的描述文件( .plist 文件)和 .ipa 文件中的 bunndle id 不一致導致的。解決辦法,修改項目的Bundle ID為 .plist 文件中的Bundle ID,編譯出新的 .ipa 文件,然后重新在設備上安裝此 .ipa 文件。此時“正在安裝...”圖標即可刪除。

94、無意中修改了 SDK 的頭文件,Xcode報告“'xxx.h' hasbeen modified since the precompiled header was built”

Clean,仍然無法編譯,在關閉 Xcode 時,Xcode 提示文件不存在,無法自動保存,並不允許退出。使用“強制退出...”關閉 Xcode,Clean,重新編譯成功。

95、iOS 7.1下in-house發布無法安裝 app,報告“Could not load non-https manifest URL”

將部署所使用的 manifest.plist文件放到 https 服務器上,並且將 manifest URL 由原來的 http 地址改為 https 地址。

96、如何讓 UIButton 的 image 位於 title 的右邊?

默認情況下 UIButton 的 image 位於 title 左邊:

但有時候你可能希望是這樣的:

則需要使用到setImageEdgeInsets 方法:

float width = _button.bounds.size.width;

    [_buttonsetImageEdgeInsets:UIEdgeInsetsMake(0, width-_button.imageView.bounds.size.width,0, 0)];

    [_buttonsetTitleEdgeInsets:UIEdgeInsetsMake(0, -_button.imageView.bounds.size.width+5,0, 0)];

97、修改table view的 section header 樣式

請使用UITableViewDelegate 中的 willDisplayHeaderView方法。

- (void)tableView:(UITableView *)tableViewwillDisplayHeaderView:(UIView *)view forSection:(NSInteger)section

{

    if([viewisKindOfClass:[UITableViewHeaderFooterView class]]){

       

       UITableViewHeaderFooterView *tableViewHeaderFooterView =(UITableViewHeaderFooterView *) view;

       tableViewHeaderFooterView.contentView.backgroundColor = [UIColorclearColor];

       tableViewHeaderFooterView.textLabel.font=[UIFont systemFontOfSize:13];

       tableViewHeaderFooterView.textLabel.textColor=[UIColor blackColor];

    }

}

98、定制 search bar的背景色

for (UIView *subview in self.searchBar.subviews)

    {

        if([subview isKindOfClass:NSClassFromString(@"UISearchBarBackground")])

        {

           [subview removeFromSuperview];

           break;

        }

    }

   self.searchBar.backgroundColor = [UIColor colorWithWhite:0.85 alpha:1];

99、Autolayout 下 UIScrollView 不會滾動

只有當 UIScrollView 的 ContentSize 大於 UIScrollView 的 frame 大小,UIScrollView 才可滾動。

但由於 constraints 的影響, 設置 ContentSize 往往無效,因此UIScrollView不可滾動。我們可以實現 viewDidLayoutSubviews 方法,在該方法中設置 ContentSize :

- (void)viewDidLayoutSubviews {

_scrollView.contentSize=CGSizeMake(_scrollView.frame.size.width,_scrollView.frame.size.height+60);

}

100、在頭文件中出現某個type“Unknown type name”

其實該 type 所在的框架或庫已被引用。例如出現錯誤“Unknown type name CGPoint”,而 CGPoint 所在的框架 CoreGraphics 已被項目正確引用了。

這種錯誤是由於“交叉頭文件引用”導致的。典型的錯誤是,一個頭文件(例如 a.h)在 .pch 文件中包含了。而 .pch 文件在編譯任何 .m 文件中都會自動被包含。 因此如果要在 .pch 文件中包含 a.h 文件,正確的做法是用 #ifdef__OBJC__ 宏:

#ifdef __OBJC__

    #import "a.h"

#endif

 


注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



iOS開發百問(4) iOS 開發百問(9) iOS開發百問(4) iOS 開發百問(7) iOS 開發百問(10) 軟件開發者面試百問 [轉]軟件開發者面試百問 Android 百問之廣播 java百問總結(三) java百問總結(四)
 
粤ICP备14056181号  © 2014-2021 ITdaan.com