亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

IOS開發基礎知識--碎片13

2019-11-14 19:03:10
字體:
來源:轉載
供稿:網友

1:運行程序報the file couldn't be opened because you don't have permission to view it 

解決辦法:項目—>targets->build settings->build options->changed the value of the "Compiler for C/C++/Objective-C" to Default Compiler. 

2:百度地圖引用

1.1如圖引用的是.framework形式開發包時,引入的命名空間則是#import <BaiduMapAPI/BMapKit.h>//引入所有的頭文件#import <BaiduMapAPI/BMKMapView.h>//只引入所需的單個頭文件如果是引入用的是.a形式開發包時,引入的命名空間則是#import “BMapKit.h"1.2百度地圖現在提供的兩個.framework的包,一個是真機一個是測試機,可以使用終端的命令把它合成一個;

3:自定義大頭針百度地圖

- (void)viewDidLoad {    [super viewDidLoad];        //百度地圖初始化    _mapView=[[BMKMapView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT-NAVBARHEIGHT)];    _mapView.delegate=self;    [self.view addSubview:_mapView];        //標出坐標點    [self addPointAnnotation];}//添加標注- (void)addPointAnnotation{    for (int i=0; i<self.coordinates.count; i++) {        coordinateBean *model=self.coordinates[i];                BMKPointAnnotation* pointAnnotation = [[BMKPointAnnotation alloc]init];        CLLocationCoordinate2D coor;        coor.latitude = model.latitude;        coor.longitude = model.longitude;        pointAnnotation.coordinate = coor;                //通過title來起到傳值的作用        pointAnnotation.title=[NSString stringWithFormat:@"%d",i];        [_mapView addAnnotation:pointAnnotation];        //顯示彈出窗        [_mapView selectAnnotation:pointAnnotation animated:YES];                                //判斷那個是中心,沒有則0必傳參數        if (i==self.selectIndex) {            BMKCoordinateRegion region; ////表示范圍的結構體            region.center.latitude  = model.latitude;// 中心中            region.center.longitude = model.longitude;            region.span.latitudeDelta = 0;//經度范圍(設置為0.1表示顯示范圍為0.2的緯度范圍)            region.span.longitudeDelta = 0;//緯度范圍                        [_mapView setRegion:region];        }    }}//處理自定義彈出視圖- (BMKAnnotationView *)mapView:(BMKMapView *)mapView viewForAnnotation:(id <BMKAnnotation>)annotation{    if ([annotation isKindOfClass:[BMKPointAnnotation class]]) {        BMKPinAnnotationView *newAnnotationView = [[BMKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"myrenameMark"];        newAnnotationView.pinColor = BMKPinAnnotationColorPurple;        newAnnotationView.animatesDrop = YES;// 設置該標注點動畫顯示               newAnnotationView.image = [UIImage imageNamed:self.mapPointImageName];   //把大頭針換成別的圖片                int selectIndex=[((BMKPointAnnotation *)annotation).title intValue];        //獲得值        coordinateBean *model=[self.coordinates objectAtIndex:[((BMKPointAnnotation *)annotation).title intValue]];                        UIView *popView=[[UIView alloc]initWithFrame:CGRectMake(0, 3, 100, 20)];                UIImage *img=[UIImage imageNamed:@"mapViewBackground"];        UIEdgeInsets edge=UIEdgeInsetsMake(0, 20, 0, 10);        img=[img resizableImageWithCapInsets:edge resizingMode:UIImageResizingModeStretch];        UIImageView *myimage=[[UIImageView alloc] initWithImage:img];        myimage.frame=CGRectMake(30, 0, 100, 40);        myimage.userInteractionEnabled=YES;                [popView addSubview:myimage];                        //自定義顯示的內容        UILabel *driverName = [[UILabel alloc]initWithFrame:CGRectMake(0, 3, 100, 15)];        driverName.backgroundColor=[UIColor clearColor];        driverName.text=model.title;        driverName.font = [UIFont systemFontOfSize:12];        driverName.textColor = [UIColor blackColor];        driverName.textAlignment = NSTextAlignmentLeft;        [myimage addSubview:driverName];                UILabel *carName = [[UILabel alloc]initWithFrame:CGRectMake(0, 18, 100, 15)];        carName.backgroundColor=[UIColor clearColor];        carName.text=model.comments;        carName.font = [UIFont systemFontOfSize:12];        carName.textColor = [UIColor blackColor];        carName.textAlignment = NSTextAlignmentLeft;        [myimage addSubview:carName];                        BMKActionPaopaoView *pView = [[BMKActionPaopaoView alloc]initWithCustomView:popView];        pView.frame = CGRectMake(0, 0, 100, 40);        ((BMKPinAnnotationView*)newAnnotationView).paopaoView = nil;        ((BMKPinAnnotationView*)newAnnotationView).paopaoView = pView;        newAnnotationView.tag=selectIndex+10;                return newAnnotationView;    }    return nil;}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];    // Dispose of any resources that can be recreated.}/** *  @author wujunyang, 15-05-12 13:05:05 * *  @brief  跟對百度地圖的處理 *  @param animated <#animated description#> */-(void)viewWillAppear:(BOOL)animated{    [_mapView viewWillAppear];    _mapView.delegate=self;    _locationService.delegate=self;}/** *  @author wujunyang, 15-01-06 10:01:53 * *  跟對百度地圖的處理 * *  @param animated <#animated description#> */-(void)viewWillDisappear:(BOOL)animated{    [_mapView viewWillDisappear];    _mapView.delegate=nil;    _locationService.delegate=nil;}其中有個自定義model:@interface coordinateBean : NSObject//緯度@PRoperty(assign,nonatomic)float latitude;//經度@property(assign,nonatomic)float longitude;//標題@property(strong,nonatomic)NSString *title;//注解@property(strong,nonatomic)NSString *comments;@end

 4:自動隱藏和顯示工具欄和導航條

toolbar屬性、toolbarItems與上一講的navigationBar、navigationItem類似。只不過toolbarItems沒有navigationItem的左右區分,它就自己一個人在做事,相當于沒有下屬??梢栽趖oolbar上設置很多,比如背景顏色、背景圖片、背景樣式、大小位置(不過有些貌似設置無效),當然和navigationBar一樣,對于它的是否顯示和隱藏是由它的老爸即navigationController控制的。所以[self.navigationController setNavigationBarHidden:YES animated:YES];也會把底部的toolBarItems給隱藏起來,如果要隱藏導航又不想底部toolBarItems被隱藏掉,可以用普通的view替代toolBarItems;首先在viewDidLoad里設置toolBarHidden = NO, 默認是YES(隱藏的)為了讓toolbar顯示,需要設置為NO(不隱藏)。- (void)viewDidLoad{    [super viewDidLoad];    self.title = @"隱藏導航欄";    // self.toolbarItems    self.navigationController.toolbar.barStyle = self.toolBar.barStyle;    self.navigationController.toolbarHidden = NO;    [self.navigationController.toolbar setTranslucent:YES];     self.toolbarItems = [[[NSMutableArray alloc] initWithArray:self.toolBar.items] autorelease];} 在點擊中間button的時候的顯示和隱藏navigation bar和toolBar實現代碼如下:- (IBAction)toggleNavigationBar:(id)sender{    //Check the current state of the navigation bar...    BOOL navBarState = [self.navigationController isNavigationBarHidden];    //Set the navigationBarHidden to the opposite of the current state.    [self.navigationController setNavigationBarHidden:!navBarState animated:YES];    [self.navigationController setToolbarHidden:!navBarState animated:YES];    //Change the label on the button.    if (navBarState)    {        [button setTitle:@"隱藏 Navigationr and toolbar" forState:UIControlStateNormal];        [button setTitle:@"隱藏 Navigation Bar toolbar" forState:UIControlStateHighlighted];    }    else    {        [button setTitle:@"顯示 Navigation Bar toolbar" forState:UIControlStateNormal];        [button setTitle:@"顯示 Navigation Bar toolbar" forState:UIControlStateHighlighted];    }}

5:View代碼結構的一些建議

在viewDidload里面只做addSubview的事情,然后在viewWillAppear里面做布局的事情,最后在viewDidAppear里面做Notification的監聽之類的事情。至于屬性的初始化,則交給getter去做。@interface CustomObject()@property (nonatomic, strong) UILabel *label;@end@implement#pragma mark - life cycle- (void)viewDidLoad{    [super viewDidLoad];    [self.view addSubview:self.label];}- (void)viewWillAppear:(BOOL)animated{    [super viewWillAppear:animated];    self.label.frame = CGRectMake(1, 2, 3, 4);}#pragma mark - getters and setters- (UILabel *)label{    if (_label == nil) {        _label = [[UILabel alloc] init];        _label.text = @"1234";        _label.font = [UIFont systemFontOfSize:12];        ... ...    }    return label;}@end注意:*重點,在get方法里面不能寫self.noLabel;千萬不要用“點”語法,這樣會造成get方法死循環,因為“點”語法就是調用的get方法,所以要用下劃線屬性名的方法得到對象(在內存這其實是一個指針)。
@interface MasonryViewController ()@property(nonatomic,strong)UIView *conView;@property(nonatomic,assign)int intstate;@end@implementation MasonryViewController- (void)viewDidLoad {    [super viewDidLoad];        [self.view addSubview:self.conView];}//懶加載-(UIView *)conView{    if(_conView==nil)    {        _conView=[[UIView alloc]init];        _conView.backgroundColor=[UIColor redColor];    }    return _conView;}-(int)intstate{    _intstate=0;    return _intstate;}//布局約束-(void)viewDidLayoutSubviews{    [self.conView mas_makeConstraints:^(MASConstraintMaker *make) {        make.top.equalTo(self.view.mas_top).with.offset(100);        make.left.equalTo(self.view.mas_left).with.offset(60);        make.right.equalTo(self.view.mas_right).with.offset(0);        make.height.equalTo(@50);    }];}- (void)didReceiveMemoryWarning {    [super didReceiveMemoryWarning];}

 

6: iOS中的生成隨機數方法

生成0-x之間的隨機正整數int value =arc4random_uniform(x + 1);生成隨機正整數int value = arc4random() 通過arc4random() 獲取0到x-1之間的整數的代碼如下:int value = arc4random() % x; 獲取1到x之間的整數的代碼如下: int value = (arc4random() % x) + 1; 最后如果想生成一個浮點數,可以在項目中定義如下宏:#define ARC4RANDOM_MAX      0x100000000 然后就可以使用arc4random() 來獲取0到100之間浮點數了(精度是rand()的兩倍),代碼如下:double val = floorf(((double)arc4random() / ARC4RANDOM_MAX) * 100.0f);實例(從數組中隨機顯示出一個背景圖,再通過網絡加載顯示出來): self.bgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];    self.bgView.image=[UIImage imageNamed:@"AppBg"];    [self.view addSubview:self.bgView];    [self.view sendSubviewToBack:self.bgView];        NSDictionary *params=[[NSDictionary alloc] init];    [[HomeMainNetAPIManager sharedManager] getBackgroundImage:params andBlock:^(id data, NSError *error) {        if (!error&&data) {            BackgroundImageBean *groundImagebean =(BackgroundImageBean *)data;            int dataNum=groundImagebean.data.count;            if (groundImagebean.data&&dataNum>0) {                int r=arc4random_uniform(dataNum);                GroundImageBean *curBean=groundImagebean.data[r];                [self.bgView sd_setImageWithURL:[NSURL URLWithString:curBean.ImgUrl] placeholderImage:[UIImage imageNamed:@"AppBg"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {                    dispatch_async(dispatch_get_main_queue(), ^{                        self.bgView.image=image;                    });                }];            }        }    }];

7:沙盒路徑知識整理

模擬器的路徑從之前的~/Library/application Support/iPhone Simulator移動到了~/Library/Developer/CoreSimulator/Devices/文件都在個人用戶名文件夾下的一個隱藏文件夾里,中文叫資源庫,他的目錄其實是Library。因為應用是在沙箱(sandbox)中的,在文件讀寫權限上受到限制,只能在幾個目錄下讀寫文件:Documents:應用中用戶數據可以放在這里,iTunes備份和恢復的時候會包括此目錄tmp:存放臨時文件,iTunes不會備份和恢復此目錄,此目錄下文件可能會在應用退出后刪除Library/Caches:存放緩存文件,iTunes不會備份此目錄,此目錄下文件不會在應用退出刪除iTunes在與iPhone同步時,備份所有的Documents和Library文件。iPhone在重啟時,會丟棄所有的tmp文件。查看方法:方法1、可以設置顯示隱藏文件,然后在Finder下直接打開。設置查看隱藏文件的方法如下:打開終端,輸入命名(1)顯示Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true(2)隱藏Mac隱藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false(3)輸完單擊Enter鍵,退出終端,重新啟動Finder就可以了 重啟Finder:鼠標單擊窗口左上角的蘋果標志-->強制退出-->Finder-->現在能看到資源庫文件夾了。 打開資源庫后找到/Application Support/iPhone Simulator/文件夾。這里面就是模擬器的各個程序的沙盒目錄了。方法2、這種方法更方便,在Finder上點->前往->前往文件夾,輸入/Users/username/Library/Application Support/iPhone Simulator/  前往。username這里寫用戶名。 自定義類返回各目錄路徑:#import <Foundation/Foundation.h>@interface ICSandboxHelper : NSObject+ (NSString *)homePath;     // 程序主目錄,可見子目錄(3個):Documents、Library、tmp+ (NSString *)appPath;        // 程序目錄,不能存任何東西+ (NSString *)docPath;        // 文檔目錄,需要ITUNES同步備份的數據存這里,可存放用戶數據+ (NSString *)libPrefPath;    // 配置目錄,配置文件存這里+ (NSString *)libCachePath;    // 緩存目錄,系統永遠不會刪除這里的文件,ITUNES會刪除+ (NSString *)tmpPath;        // 臨時緩存目錄,APP退出后,系統可能會刪除這里的內容+ (BOOL)hasLive:(NSString *)path; //判斷目錄是否存在,不存在則創建實現代碼:#import "ICSandboxHelper.h"@implementation ICSandboxHelper+ (NSString *)homePath{    return NSHomeDirectory();}+ (NSString *)appPath{    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSApplicationDirectory, NSUserDomainMask, YES);    return [paths objectAtIndex:0];}+ (NSString *)docPath{    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);    return [paths objectAtIndex:0];}+ (NSString *)libPrefPath{    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);    return [[paths objectAtIndex:0] stringByAppendingFormat:@"/Preference"];}+ (NSString *)libCachePath{    NSArray * paths = NSSearchPathForDirectoriesInDomains(NSLibraryDirectory, NSUserDomainMask, YES);    return [[paths objectAtIndex:0] stringByAppendingFormat:@"/Caches"];}+ (NSString *)tmpPath{return [NSHomeDirectory() stringByAppendingFormat:@"/tmp"];}+ (BOOL)hasLive:(NSString *)path{    if ( NO == [[NSFileManager defaultManager] fileExistsAtPath:path] )    {        return [[NSFileManager defaultManager] createDirectoryAtPath:path                                         withIntermediateDirectories:YES                                                          attributes:nil                                                               error:NULL];    }        return NO;}

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
川上优av一区二区线观看| 国产精品极品在线| 国产精品视频最多的网站| 亚洲精品福利在线| 日韩中文字幕网址| 亚洲码在线观看| 亚洲男人天堂久| 亚洲爱爱爱爱爱| 久久久国产精品亚洲一区| 92国产精品久久久久首页| 亚洲第一av网站| 奇门遁甲1982国语版免费观看高清| 亚洲国产中文字幕在线观看| 日韩**中文字幕毛片| 国产精品入口尤物| 亚洲精品久久久久久久久| 91av在线免费观看视频| 亚洲电影成人av99爱色| 精品久久久久久久中文字幕| 成人国产精品久久久久久亚洲| 在线观看日韩视频| 国产精品三级在线| 日韩av一区二区在线观看| 国产成人高清激情视频在线观看| 亲爱的老师9免费观看全集电视剧| 国产一区二区香蕉| 亚洲国产中文字幕在线观看| 青草青草久热精品视频在线观看| 日韩成人xxxx| 国产成人亚洲综合| 亚洲成人精品久久久| 中文字幕欧美视频在线| 亚洲区免费影片| 日韩中文字幕欧美| 成人黄色免费片| www欧美xxxx| 国产精品福利观看| 亚洲美女www午夜| 日韩欧美福利视频| 国产精选久久久久久| 亚洲国产日韩欧美在线99| 日韩电影第一页| 欧美在线免费视频| 成人黄色免费在线观看| 久久99久久99精品中文字幕| 538国产精品一区二区免费视频| 久久成人精品电影| 亚洲成人av在线| 国产精品美女在线| 久久999免费视频| 欧美小视频在线观看| 亚洲欧洲在线视频| 国产精品高清免费在线观看| 亚洲伊人久久大香线蕉av| 国产精品精品国产| 国产香蕉97碰碰久久人人| 国产精品aaa| 欧美激情综合色综合啪啪五月| 精品福利一区二区| 精品中文字幕在线观看| 精品欧美aⅴ在线网站| 久久精品成人动漫| 久久久久久久影视| 久久视频这里只有精品| 亚洲欧美日韩精品久久| 欧美成人午夜激情视频| 成人h视频在线| 国产精品成人v| 国产精品日韩在线观看| 日本精品久久久久久久| 久久人人爽国产| 曰本色欧美视频在线| 欧美三级欧美成人高清www| 日本亚洲精品在线观看| 欧美成人免费全部观看天天性色| 成人黄色av网站| 欧美成年人视频网站| 国内精品一区二区三区| 97**国产露脸精品国产| www.欧美精品一二三区| 欧美整片在线观看| 欧美性猛交xxxx偷拍洗澡| 国产精品尤物福利片在线观看| 欧美精品久久久久a| 亚洲精品乱码久久久久久金桔影视| 在线观看精品自拍私拍| 国产精品免费一区豆花| 日韩av最新在线| www.xxxx欧美| 日韩视频在线一区| 久久精品人人爽| 成人乱人伦精品视频在线观看| 欧美国产日韩一区二区| 日韩欧美国产激情| 在线亚洲午夜片av大片| 亚洲精品狠狠操| 国内精品久久久久| 亚洲精品福利视频| 欧美日韩国产一区在线| 亚州成人av在线| 91美女片黄在线观看游戏| 日韩欧美福利视频| 91日韩在线播放| 久久91精品国产| 久久久亚洲影院| 97在线看福利| 一本色道久久88综合亚洲精品ⅰ| 热门国产精品亚洲第一区在线| 国产欧美一区二区白浆黑人| 国产精品久久久久久久久久| 57pao成人国产永久免费| 国产视频丨精品|在线观看| 久久久av网站| 这里精品视频免费| 91免费欧美精品| 欧美猛交免费看| 欧美另类第一页| 奇米4444一区二区三区| 欧美一级片久久久久久久| 亚洲一区二区三区四区视频| 日韩h在线观看| 一区二区三区四区精品| 91丨九色丨国产在线| 久久久久久有精品国产| 国产成人精品视频在线| 国产91对白在线播放| 欧美成人剧情片在线观看| 日韩av123| 亚洲精品一区av在线播放| 亚洲天堂av在线播放| 91国自产精品中文字幕亚洲| 91po在线观看91精品国产性色| 国产成人高清激情视频在线观看| 国产成人精品视频在线观看| 久久国产精品久久久久| 成人做爽爽免费视频| 久热精品视频在线观看一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美日韩免费在线| 日韩免费在线播放| 精品久久久久久亚洲国产300| 亚洲激情成人网| 亚洲人成伊人成综合网久久久| 97在线视频免费播放| 国产91精品在线播放| 欧美日产国产成人免费图片| 亚洲va欧美va在线观看| 这里只有精品在线播放| 国产精品福利小视频| 欧美亚洲一区在线| 中日韩美女免费视频网站在线观看| 日韩最新中文字幕电影免费看| 成人黄色av播放免费| 亚洲福利视频免费观看| 亚洲电影av在线| 久久人人爽人人爽人人片亚洲| 欧美国产日本高清在线| 欧美多人爱爱视频网站| 国产美女主播一区| 91精品国产综合久久男男| 亚洲乱码国产乱码精品精| 欧美日韩福利在线观看| 日韩精品中文字幕久久臀| 日本高清不卡的在线|