IOS開發基礎知識--片段37,ios基礎知識--37

來源:互聯網
上載者:User

IOS開發基礎知識--片段37,ios基礎知識--37

1:iOS 使用NJKWebViewProgress做webview進度條

引入標頭檔:#import "NJKWebViewProgressView.h"#import "NJKWebViewProgress.h"
遵守協議<UIWebViewDelegate, NJKWebViewProgressDelegate>實現代碼@implementation ViewController{    IBOutlet __weak UIWebView *_webView;    NJKWebViewProgressView *_webViewProgressView;    NJKWebViewProgress *_webViewProgress;}- (void)viewDidLoad{    [super viewDidLoad];    _webViewProgress = [[NJKWebViewProgress alloc] init];    _webView.delegate = _webViewProgress;    _webViewProgress.webViewProxyDelegate = self;    _webViewProgress.progressDelegate = self;CGRect navBounds = self.navigationController.navigationBar.bounds;CGRect barFrame = CGRectMake(0,                             navBounds.size.height - 2,                             navBounds.size.width,                             2);_webViewProgressView = [[NJKWebViewProgressView alloc] initWithFrame:barFrame];_webViewProgressView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleTopMargin;[_webViewProgressView setProgress:0 animated:YES];[self loadBaidu];[self.navigationController.navigationBar addSubview:_webViewProgressView];}-(void)loadBidu{    NSURLRequest *req = [[NSURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.baidu.com/"]];    [_webView loadRequest:req];}#pragma mark - NJKWebViewProgressDelegate-(void)webViewProgress:(NJKWebViewProgress *)webViewProgress updateProgress:(float)progress{    [_webViewProgressView setProgress:progress animated:YES];    self.title = [_webView stringByEvaluatingJavaScriptFromString:@"document.title"];}

 2:解決輸入框UITextField關於拼音或部首被當作內容響應

// 添加監聽[[NSNotificationCenter defaultCenter] addObserver:self                                         selector:@selector(textFieldDidChanged:)                                             name:UITextFieldTextDidChangeNotification                                           object:self.textField];// 監聽處理- (void)textFieldDidChanged:(NSNotification *)notification {    NSString *text = self.textField.text;    // 拼音輸入時,拼音字母處於選中狀態,此時不判斷是否超長    UITextRange *selectedRange = [self.textField markedTextRange];    if (!selectedRange || !selectedRange.start) {        if (text.length > MAXLENGTH) {            self.textField.text = [text substringToIndex:MAXLENGTH];        }    }}

這裡主要使用了兩個知識:

  • IME輸入時,拼音字母或者筆畫處於選中狀態,可以使用 markedTextRange 擷取到
  • 普通輸入,以及將IME的待選字填入輸入框時,都會發出 UITextFieldTextDidChangeNotification, 可以監聽這個通知,並事後對 UITextField 的內容做清理

另外除了使用監聽 NSNotification 的方式,也可以使用 addTargetAction 的方式,代碼如下:

[self.textField addTarget:self                   action:@selector(textChange:)         forControlEvents:UIControlEventEditingChanged];

這與上面的方式是等價的,但是使用 NSNotification 需要在對象銷毀時 removeObserver,而這種方式不需要

3:根據內容自適應UIButton的大小

NSString *str = @"這是按鈕的標題";    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];    btn.titleLabel.font = [UIFont systemFontOfSize:13.0];//對按鈕的外形做了設定,不喜可刪~    btn.layer.masksToBounds = YES;    btn.layer.borderWidth = 1;    btn.layer.borderColor = [[UIColor blackColor] CGColor];    btn.layer.cornerRadius = 3;    [btn setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];    [btn setTitle:str forState:UIControlStateNormal];//重要的是下面這部分哦!    CGSize titleSize = [str sizeWithAttributes:@{NSFontAttributeName: [UIFont fontWithName:btn.titleLabel.font.fontName size:btn.titleLabel.font.pointSize]}];        titleSize.height = 20;    titleSize.width += 20;    btn.frame = CGRectMake(100, 100, titleSize.width, titleSize.height);    [view addSubview:btn];

 4:解決部分文字樣式不同的方法

    NSRange range =  [title rangeOfString:targetname];    NSMutableAttributedString *mutableTitle = [[NSMutableAttributedString alloc] initWithString:title];    [mutableTitle addAttribute:NSForegroundColorAttributeName value:COLOR_WORD_GRAY_2 range:NSMakeRange(0, title.length)];    if (range.length>0) {        [mutableTitle addAttribute:NSForegroundColorAttributeName value:HEXCOLOR(0xf7ab00) range:range];        NSInteger startIndex = range.location+range.length;        [mutableTitle addAttribute:NSForegroundColorAttributeName value:COLOR_WORD_GRAY_2 range:NSMakeRange(startIndex, title.length-startIndex)];        [mutableTitle addAttribute:NSFontAttributeName value:CHINESE_SYSTEM(16) range:NSMakeRange(0, title.length)];    }        self.titleLabel.attributedText=mutableTitle;

 

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.