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

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

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

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

1:Delegate運用

.h#import <UIKit/UIKit.h>@PRotocol FilterHeaderViewDelegate <NSObject>@required-(void)filterHeaderViewMoreBtnClicked:(id)sender;@endextern float CYLFilterHeaderViewHeigt;@interface FilterHeaderView : UICollectionReusableView@property (nonatomic, weak  ) id<FilterHeaderViewDelegate> delegate;@end.m- (void)moreBtnClicked:(id)sender {    if ([self.delegate respondsToSelector:@selector(filterHeaderViewMoreBtnClicked:)]) {        [self.delegate filterHeaderViewMoreBtnClicked:self.moreButton];    }}注意在.m中會有要調用上面這個方法:[self.moreButton addTarget:self action:@selector(moreBtnClicked:) forControlEvents:UIControlEventTouchUpInside];而在調用這個插件的時候記得把delegate賦于self,并要把FilterHeaderViewDelegate引入到<>里;然后就可以實現這個deletage的方法;

2:實現UIButton不同狀態下的顯示

[btn setTitle:@"更多" forState:UIControlStateNormal];    [btn setTitle:@"收起" forState:UIControlStateSelected];    btn.titleLabel.font = [UIFont systemFontOfSize:12];    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateSelected];    btn.adjustsImageWhenHighlighted = NO;    [btn setImage:[UIImage imageNamed:@"home_btn_more_normal"] forState:UIControlStateNormal];    [btn setImage:[UIImage imageNamed:@"home_btn_more_selected"] forState:UIControlStateSelected];    btn.titleEdgeInsets = UIEdgeInsetsMake(0, -btn.imageView.frame.size.width-kImageToTextMargin, 0, btn.imageView.frame.size.width);    btn.imageEdgeInsets = UIEdgeInsetsMake(0, btn.titleLabel.frame.size.width, 0, -btn.titleLabel.frame.size.width);

3:視圖uiview增加點擊事件

    if (!_TicketView) {        _TicketView=[UIView new];        _TicketView.backgroundColor=[UIColor whiteColor];        //增加點擊事件        UITapGestureRecognizer *tapGesture=[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(TickAction:)];        [_TicketView addGestureRecognizer:tapGesture];        [_BelowView addSubview:_TicketView];    }調用:-(void)TickAction:(id)sender{    NSLog(@"sdfsdfsdf");}

4:在ios7中出現滾動視圖UIScrollView不兼容問題,無法滾動

把contentSize定義放在viewDidLayoutSubviews中;-(void)viewDidLayoutSubviews{    _myScrollView.contentSize=CGSizeMake(SCREEN_WIDTH,600);}

5:對UIButton上的圖標進行翻轉

#define DEGREES_TO_RADIANS(angle) ((angle)/180.0 *M_PI)調用:_BtnMoreContent.imageView.transform = CGAffineTransformRotate(_BtnMoreContent.imageView.transform, DEGREES_TO_RADIANS(180));

6:創建一個背景圖片,并從網絡動態加載

在viewDidLoad調用:-(void)LoadBackViewImage{    UIImageView *bgView=[[UIImageView alloc] initWithFrame:CGRectMake(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)];        bgView.image=[UIImage imageNamed:@"bgWeatherEmpty"];        [bgView sd_setImageWithURL:[NSURL URLWithString:self.backImageUrl] placeholderImage:[UIImage imageNamed:@"bgWeatherEmpty"] completed:^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {        dispatch_async(dispatch_get_main_queue(), ^{            bgView.image=image;            [self.view addSubview:bgView];            [self.view sendSubviewToBack:bgView];        });    }];}注意:UIView層次管理(sendSubviewToBack,bringSubviewToFront) 將一個UIView顯示在最前面只需要調用其父視圖的 bringSubviewToFront()方法。將一個UIView層推送到背后只需要調用其父視圖的 sendSubviewToBack()方法。

7:加載xib到其它視圖中

創建一個UIView的xib文件,這個方程可以看網上隨便一個文章,主要是把屬性中的custom Class指定給創建的那個 .h文件;.h#import <UIKit/UIKit.h>@interface LKTextView : UIView@property (strong, nonatomic) IBOutlet UILabel *lbText;- (IBAction)bt_pressed:(id)sender;@property (strong, nonatomic) IBOutlet UITextField *textView;+(LKTextView*)instanceTextView;@end.m#import "LKTextView.h"#import "RKTabView.h"#import "RKTabItem.h"@implementation LKTextView@synthesize textView;@synthesize lbText;+(LKTextView *)instanceTextView{    NSArray* nibView =  [[NSBundle mainBundle] loadNibNamed:@"LKTextView" owner:nil options:nil];    return [nibView objectAtIndex:0];}-(id)initWithCoder:(NSCoder *)aDecoder{    self = [super initWithCoder:aDecoder];    if(self)    {        //其它自個想增加到視圖里的        [self initViews];            }    return self;}/** *  @author wujunyang, 15-04-30 16:04:03 * *  @brief  這邊是運用RKTABVIEW創建一個標簽的 */-(void)initViews{    UIView *vi=[[UIView alloc] initWithFrame:CGRectMake(0, 0, 20, 30)];    vi.backgroundColor=[UIColor redColor];    [self addSubview:vi];        RKTabView *titledTabsView=[[RKTabView alloc] initWithFrame:CGRectMake(0, 0, 200, 50)];    [self addSubview:titledTabsView];        RKTabItem *mastercardTabItem = [RKTabItem createUsualItemWithImageEnabled:nil imageDisabled:[UIImage imageNamed:@"mastercard"]];    mastercardTabItem.titleString = @"MasterCard";    RKTabItem *paypalTabItem = [RKTabItem createUsualItemWithImageEnabled:nil imageDisabled:[UIImage imageNamed:@"paypal"]];    paypalTabItem.titleString = @"PayPal";    RKTabItem *visaTabItem = [RKTabItem createUsualItemWithImageEnabled:nil imageDisabled:[UIImage imageNamed:@"visa"]];    visaTabItem.titleString = @"Visa";    RKTabItem *wuTabItem = [RKTabItem createUsualItemWithImageEnabled:nil imageDisabled:[UIImage imageNamed:@"wu"]];    wuTabItem.titleString = @"Western Union";    RKTabItem *wireTabItem = [RKTabItem createUsualItemWithImageEnabled:nil imageDisabled:[UIImage imageNamed:@"wire-transfer"]];    wireTabItem.titleString = @"Wire Transfer";        //mastercardTabItem.tabState = TabStateEnabled;        titledTabsView.darkensBackgroundForEnabledTabs = YES;    titledTabsView.horizontalInsets = HorizontalEdgeInsetsMake(25, 25);    titledTabsView.titlesFontColor = [UIColor colorWithWhite:0.9f alpha:0.8f];        titledTabsView.tabItems = @[mastercardTabItem, paypalTabItem, visaTabItem, wuTabItem, wireTabItem];}/*// Only override drawRect: if you perform custom drawing.// An empty implementation adversely affects performance during animation.- (void)drawRect:(CGRect)rect{    // Drawing code}*/- (IBAction)bt_pressed:(id)sender {    lbText.text = textView.text;}@end然后調用視圖.m:- (void)viewDidLoad{       LKTextView* text = [LKTextView instanceTextView];    text.frame = CGRectMake(100, 100, text.frame.size.width, text.frame.size.height);    text.textView.text = @"input ";   [self.view addSubview:text];    [super viewDidLoad];    // Do any additional setup after loading the view, typically from a nib.}

 8:不錯的插件

AutoLayout下自動計算UITableViewCell高度的擴展FDTemplateLayoutCell    https://github.com/forkingdog/UITableView-FDTemplateLayoutCell多視圖控制器間進行切換--XLPagerTabStrip                              https://github.com/xmartlabs/XLPagerTabStrip不錯的標簽選項卡插件                                                 https://github.com/RafaelKayumov/RKTabView
生成@3x圖片對應的@2x和@1x版本--RTImageAssets                         https://github.com/rickytan/RTImageAssets
使用:用來生成 @3x 的圖片資源對應的 @2x 和 @1x 版本,只要拖拽高清圖到 @3x 的位置上,然后按 Ctrl+Shift+A 即可自動生成兩張低清的補全空位。當然你也可以從 @2x 的圖生成 @3x 版本,如果你對圖片質量要求不高的話

9:ios7和ios8關于導航欄的那些事

ios7之前的版本中UIViewController中的view在顯示后會自動調整為去掉導航欄的高度的,控件會自動在導航欄以下擺放。在iOS7中UIViewController的wantsFullScreenLayout屬性被舍棄了,所有的UIViewController創建后默認就是full Screen的,因此如果帶導航欄的應用界面中的部分控件會被導航欄覆蓋掉。解決方案:可以使用ios7種UIViewController新增的屬性extendLayoutIncludesOpaqueBars和edgesForExtendedLayout來解決。其中這個屬性指定了當bar使用不透明圖片時,試圖是否延伸至bar所在區域,默認值為NO。而edgesForExtendedLayout其中這個屬性指定了當Bar使用了不透明圖片時,視圖是否延伸至Bar所在區域,默認值時NO。而edgesForExtendedLayout則是表示視圖是否覆蓋到四周的區域,默認是UIRectEdgeAll,即上下左右四個方向都會覆蓋,那么為讓頂部不進行延伸到導航欄覆蓋的區域,我們可以把頂部區域延伸去掉。實現代碼如下:self.extendedLayoutIncludesOpaqueBars = NO;self.edgesForExtendedLayout = UIRectEdgeBottom | UIRectEdgeLeft | UIRectEdgeRight;

 11:initWithNibName/awakeFromNib/initWithCoder區別

第一、initWithNibName這個方法是在controller的類在IB中創建,但是通過Xcode實例化controller的時候用的. 第二、initWithCoder 是一個類在IB中創建但在xocde中被實例化時被調用的.比如,通過IB創建一個controller的nib文件,然后在xcode中通過 initWithNibName來實例化這個controller,那么這個controller的initWithCoder會被調用.或者是一個view的nib文件,類似方法創建時調用initWithCoder 第三、awakeFromNib  當.nib文件被加載的時候,會發送一個awakeFromNib的消息到.nib文件中的每個對象,每個對象都可以定義自己的awakeFromNib函數來響應這個消息,執行一些必要的操作。也就是說通過nib文件創建view對象時執行awakeFromNib 第四、關于 initWithNibName 和 loadNibNamed 的區別和聯系 :   關于 initWithNibName 和 loadNibNamed 的區別和聯系。之所以要把這兩者來一起講,我覺的我也有點困惑,到底用那種?其實真正搞清楚了他們之間的差別,就不會這么迷惘了。因為這兩個方法,根本就不是一路貨色。  既然,是要說明這2個方法,那就著重將區別吧。  但是第一步,還是要羅嗦一下,他們的聯系:可以使用此方法加載用戶界面(xib文件)到我們的代碼中,這樣,可以通過操作這個加載進來的(xib)對象,來操作xib文件內容。  下面進入主題,談區別: 1. ShowViewController的initWithNibName方法 ShowViewController * showMessage = [[ShowViewController alloc]  initWithNibName:@"ShowViewController" bundle:nil];  self.showViewController = showMessage;  [showMessage release];  2.VideoCellController的loadNibNamed方法 NSArray * nib = [[NSBundle mainBundle] loadNibNamed:@"Save3ViewController"  owner:self options:nil] ;  self.showViewController = [nib lastObject];  [nib objectAtIndex:0];  總結:  只看他們初始化,那可能感覺是一樣的。但是如果,打開分別看xib的關系的時候,才恍然大悟,原來他們的集成類都不一樣。 1. initWithNibName要加載的xib的類為我們定義的視圖控制器類 2.加載方式不同 initWithNibName方法:是延遲加載,這個View上的控件是 nil 的,只有到 需要顯示時,才會不是 nil  loadNibNamed方法:即時加載,用該方法加載的xib對象中的各個元素都已經存在。  (認真理解這句幫規:when using loadNibNamed:owner:options:, the File's Owner should be NSObject, the main view should be your class type, and all outlets should be hooked up to the view, not the File's Owner.)   第五、initWithCoder和initWithFrame的區別  nitWithoder 是當從nib文件中加載對象的時候會調用,比如你的view來自nib那么就會調用這個view的這個函數。(由框架調用) initWithFrame (是由用戶調用,來初始化對象的) 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
成人在线小视频| 国产97色在线| 精品露脸国产偷人在视频| 久久久之久亚州精品露出| 国产精品三级网站| 欧美一级视频一区二区| 在线播放日韩专区| 国语对白做受69| 久久久999精品| 日韩精品中文字幕视频在线| 97国产精品视频人人做人人爱| 精品高清一区二区三区| 国产成人在线一区二区| 久久亚洲综合国产精品99麻豆精品福利| 国产在线播放不卡| 欧美一级视频一区二区| 国产精品一区久久久| 51ⅴ精品国产91久久久久久| 亚洲在线观看视频网站| 中文字幕国产亚洲| 欧美成人精品激情在线观看| 日韩av中文字幕在线免费观看| 91亚洲国产成人精品性色| 久久久久久成人精品| 欧美一区第一页| 91欧美精品成人综合在线观看| 亚洲精选中文字幕| 亚洲影影院av| 国产日韩中文在线| 精品亚洲国产视频| 久久亚洲国产精品| 国产精品女主播| 78色国产精品| 在线丨暗呦小u女国产精品| 超碰97人人做人人爱少妇| 97视频免费看| 国产主播欧美精品| 日韩在线视频线视频免费网站| 欧美成人精品不卡视频在线观看| 正在播放亚洲1区| 日韩av在线不卡| 亚洲欧美中文另类| 中文字幕亚洲专区| 日韩va亚洲va欧洲va国产| 97视频国产在线| 亚洲黄色www网站| 久久久久久久久电影| 国产精品久久在线观看| 国产精品高清免费在线观看| 自拍偷拍亚洲在线| 午夜精品视频在线| 91精品国产综合久久久久久蜜臀| 中文字幕亚洲欧美在线| 日韩大陆欧美高清视频区| 国产亚洲精品美女久久久久| 亚洲伦理中文字幕| 欧美国产在线视频| 国产成人精品免高潮在线观看| 久久久精品999| 亚洲精品成人久久| 在线观看国产欧美| 成人免费淫片视频软件| 亚洲国产一区二区三区在线观看| 国产精品视频永久免费播放| 亚洲国产精品高清久久久| 尤物精品国产第一福利三区| 久久精品中文字幕| 日韩欧美中文免费| 国产精品女主播| 亚洲欧美综合精品久久成人| 国产欧美一区二区三区久久人妖| 日韩av理论片| 亚洲香蕉伊综合在人在线视看| 亚洲在线视频福利| 日韩免费不卡av| 亚洲欧美精品伊人久久| 国产精品18久久久久久首页狼| 狠狠躁夜夜躁人人爽天天天天97| 国产这里只有精品| 奇米4444一区二区三区| 伊人久久久久久久久久久| 亚洲国产欧美一区| 91av成人在线| 亚洲欧洲自拍偷拍| 国产这里只有精品| 亚洲精品免费av| 欧洲亚洲免费在线| 亚洲一区免费网站| 日韩欧美极品在线观看| 欧美日韩精品二区| 国产精品一久久香蕉国产线看观看| 91国语精品自产拍在线观看性色| 国产成人精彩在线视频九色| 亚洲无av在线中文字幕| 中国china体内裑精亚洲片| 日韩免费在线观看视频| 青草热久免费精品视频| 69久久夜色精品国产69乱青草| 亚洲人成网站999久久久综合| 九九热这里只有在线精品视| 亚洲欧美中文另类| 日韩小视频在线观看| 亚洲肉体裸体xxxx137| 91精品久久久久久久久不口人| 日韩高清有码在线| 91精品在线看| 91亚洲国产成人精品性色| 日韩成人av网| 成人国产在线激情| 国产91精品最新在线播放| 精品高清美女精品国产区| 欧美日韩中文字幕综合视频| 国产精品久久久久久久久久久久久| 日韩av在线天堂网| 精品视频一区在线视频| 欧美在线中文字幕| 亚洲韩国欧洲国产日产av| 国产一区二区三区久久精品| 91在线视频精品| 亚洲精品小视频| 国产日韩av高清| 中文字幕亚洲一区| 色综合久久悠悠| 欧美极品第一页| 国产视频精品在线| 亚洲精品wwww| 久久久av电影| 成人激情视频小说免费下载| 日韩电影在线观看永久视频免费网站| 精品国产一区二区三区四区在线观看| 欧美日韩激情美女| 最近2019年好看中文字幕视频| 激情av一区二区| 亚洲一区二区三区成人在线视频精品| 久久视频精品在线| 91成人在线视频| 亚洲午夜性刺激影院| 中文字幕精品一区二区精品| 欧美激情视频在线免费观看 欧美视频免费一| xxav国产精品美女主播| 欧美性生交大片免费| 国产精品看片资源| 亚洲欧美日韩国产中文| 欧美一级淫片aaaaaaa视频| 日韩电影在线观看中文字幕| 亚洲欧洲视频在线| 国产欧美一区二区三区久久| 岛国视频午夜一区免费在线观看| 久久久久久久久久久成人| 精品国产户外野外| 91夜夜未满十八勿入爽爽影院| 欧美视频在线免费看| 日韩视频精品在线| 91免费在线视频网站| 欧美在线观看网站| 91精品视频免费看| 欧美成aaa人片在线观看蜜臀| 久久99久国产精品黄毛片入口| 国产美女久久久| 亚洲字幕在线观看| 欧美精品一区二区三区国产精品| 日本欧美爱爱爱| 亚洲视频专区在线| 69久久夜色精品国产7777|