最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
ios開發(fā)文本,iOS開發(fā)文檔

iOS開發(fā)怎樣實現(xiàn)全系統(tǒng)的文本復(fù)制粘貼

在開發(fā)的過程中,我們有時候想要在A應(yīng)用中復(fù)制一段文本,然后在B應(yīng)用中粘貼使用,這就需要使用到系統(tǒng)級的復(fù)制粘貼功能了。在iOS中,實現(xiàn)全系統(tǒng)復(fù)制功能的代碼其實很簡單:

目前創(chuàng)新互聯(lián)已為上千多家的企業(yè)提供了網(wǎng)站建設(shè)、域名、雅安服務(wù)器托管成都網(wǎng)站托管、企業(yè)網(wǎng)站設(shè)計、拉薩網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

UIPasteboard *pb = [UIPasteboard generalPasteboard];

pb.string = @"hello,world!";

接下來我們看一下效果:

在這里我就先寫這么多,接下來我會把 UIPasteboard 類的詳細使用示例總結(jié)一下

iOS富文本實現(xiàn)(-):私密閱讀效果

廢話不多說,咱們直接先看效果!看是不是咱想要的哈

就像上圖所示的示例:

1.項目需求

項目中要實現(xiàn)私密閱讀信息的功能,即一次只能查看一行文字功能。當我們手指點擊或者滑動到某一行文字的時候,該行文字會顯示出來,而當我們手指離開該行的時候,文字會隱藏起來。

主要目的是, 該App要防止用戶截屏,真正做到隱私無泄漏。

2.大致思考說明

明白了我們的核心需求后,那么對這個問題的思考點落腳:

首先要實現(xiàn)文本的行數(shù)的監(jiān)聽控制,那么自然要用到label中的 富文本展示功能;

其次是覆蓋到的文本位置區(qū)域要盡可能的準確無誤;

最后當然是手指滑動以及點擊過程中的監(jiān)聽交互與覆蓋層的處理邏輯。

針對以上問題,要怎么來解決呢?

總的來說,基本從實現(xiàn)該功能來說,其實可以簡單總結(jié)為三步曲

1.富文本文字的設(shè)置

這塊主要涉及對文字大小,字與字的間距,行間距,甚至未來的段間距等相關(guān)的設(shè)置,這是富文本研究的基礎(chǔ)工作。

2.遮蓋層的選擇研究

關(guān)于遮蓋層方面,其實一般開發(fā)人員就直接會去選擇View去處理。但是如果從性能角度考慮,這層遮蓋層僅僅是只有遮蓋功能,并沒有事件的響應(yīng)以及其他復(fù)雜業(yè)務(wù)邏輯的功能,這邊考慮的是用layer來處理,如下所示:

layer來處理的話,有個問題會出現(xiàn),即對layer身上沒有tag標簽可以標記,所以對于初次展示的遮蓋依然需要用View來遮蓋(即紅色遮蓋的部分),用戶只要點擊過該行之后,就是下面的Layer(灰色遮蓋)。

灰色遮蓋Layer會長期存在,而紅色遮蓋View則會在用戶點擊了改行之后就會永遠消失(紅色遮蓋類似標記用戶已讀未讀的功能)。

3.手勢添加的策略

手勢添加是個小問題,重要的是手勢添加之后如何和View關(guān)聯(lián)處理的邏輯,所以這里就只展示手勢點擊后的策略,即如下所示:

1.文字行數(shù)計算的細節(jié)

首先是關(guān)于文字的高度計算特點,由于系統(tǒng)默認的Label是沒有縱向居中展示的功能,所以這里繼承了MyLabel的自定義Label,來實現(xiàn)自己的Label可以居上顯示,從而可以在后續(xù)為遮蓋層實現(xiàn)精準覆蓋到對應(yīng)的文字上。

這也算是站在巨人的肩膀上做開發(fā)了哈!

2.文字行數(shù)計算的說明

如下所示,關(guān)于文字行數(shù)的計算,這里的注釋寫的很明白!為了方便大家理解,這里就再以一個案例來聊聊,這里注意的細節(jié)。

首先如圖的singleSize為單個文字的高度。注意這里傳的字典中一定不要有行高傳過去,不然后續(xù)計算就比較麻煩。

另外一點就是 如圖的lineCount == 1的時候為什么還要加上個行高和實際字體高度的比較呢?

核心原因是因為一行單純文字假設(shè)是20高度,行高10,則行高為30。那么一行文字展示為30,而二行文字展示為20+10+20=50,此時用一行文字30/行高30 = 1,而二行文字50/30 得到的integer數(shù)值依然為1。所以就必須要進一步文字的高度和行高是不是剛好。但考慮文字的高度比如本次用的是18號文字,字高位21.xxxx。這樣的情況。不知道其他的文字和行高會不會出現(xiàn)后面有誤差的情況。此時倘若文字的高度大于行高倒還好說。因為結(jié)果是1.多,即為1;而反之的話,為0.9多,就會出現(xiàn)行數(shù)為0的尷尬情形。

所以后續(xù)在進行行數(shù)計算的時候,實際也是考慮了以上的情形, 在計算出來的lineCount基礎(chǔ)上加1.因為最后一行是沒有行間距的。如下所示實際的行數(shù)為lineCount + 1。

2.動態(tài)計算一片字所占方法的枚舉

這塊分析和研究方面情況容易忽略,順手說一下,因為在后面其他地方有遇到過這樣的問題,即如下所示,在Label的boundingRectWithSize方法中有options,是來讓我們告訴系統(tǒng),你想要獲得這串文字的整塊的布局還是說是某一行甚至某一個字的大小返回情況。

這塊個人寫了2個方法如下所示,Demo中沒有,一個是返回一塊文字的尺寸,一個是返回一行文字的尺寸。核心是options值的不同。

4.小不足點1個

如下所示的,在點擊手勢中由于無法監(jiān)聽到其結(jié)束時的狀態(tài),所以用長按手勢來代替。即對于點擊手勢它的gesture.state只有UIGestureRecognizerStateBegan的狀態(tài),那么問題如果非要用點擊手勢,就會出現(xiàn),用戶點擊后,無法監(jiān)聽到其點擊手勢結(jié)束時把對應(yīng)點擊位置的Layer給顯示出來的邏輯,所以考慮用長按手勢來代替,只是把長按時間如下設(shè)置為0.05s。

所以如果發(fā)現(xiàn)有這塊秒速的點擊無法出現(xiàn)效果,還望大家一起思考這個問題的解決方案,謝謝!

過去3年多以來,由于制定了很多計劃,但由于各種原因所致,技術(shù)的學習時有時無。

就像一個笑話說的,我們有很多計劃,簡稱為plan。但在實際完成過程中只完成了個p,因為lan,哈哈哈!

希望未來可以重新開啟技術(shù)之窗的對話,歡迎大家捧場哈!

這里附上一個gitee的項目連接地址: 我的富文本之DDRichTextDemo

一并把一些參考資料附上:

1.iOS富文本(NSAttributedString)---盡力弄全了

2.iOS開發(fā)之UILable文字 居上對齊/居中對齊/居下對齊

3.IOS如何使用CAShapeLayer實現(xiàn)復(fù)雜的View的遮罩效果

有問題歡迎評論區(qū)見哈!

iOS 開發(fā)-UILabel(文本)的使用

1.???? 創(chuàng)建CGRectrect = CGRectMake(100,200,50,50);

UILabel *label = [[UILabelalloc]initWithFrame:rect];

2. ???? text ? ? 設(shè)置和讀取文本內(nèi)容,默認為nil

label.text = @”文本信息”; ? ??設(shè)置內(nèi)容

NSLog(@”%@”, label.text) ? ? 打印label內(nèi)容

3. ???? textColor ???? 設(shè)置文字顏色,默認為黑色

lable.textColor = [UIColor redColor];

4. ???? font ???? 設(shè)置字體大小,默認17

label.font = [UIFont systemFontOfSize:20]; 跟隨系統(tǒng)默認字體

label.font=[UIFont boldSystemFontOfSize:20]; 設(shè)置字體加粗字號為20的label

label.font=[UIFont fontWithName:@"Arial"size:16]; 指定字體的方法, 還有?一種從外部導入字體的方法

5.????? textAlignment ? ?? 設(shè)置標簽文本對齊方式

label.textAlignment = NSTextAlignmentCenter; 設(shè)置文本內(nèi)容居中顯示

label.textAlignment = NSTextAlignmentLeft; 設(shè)置文本內(nèi)容居左顯示

label.textAlignment = NSTextAlignmentRight; 設(shè)置文本內(nèi)容居右顯示

6. ???? numberOfLines ? ?? 設(shè)置文本最多顯示行數(shù), 為0則表示行數(shù)不限(無限行)

label.numberOfLines = 2; 設(shè)置文本內(nèi)容行數(shù)為2行

7. ???? enabled ? ? 只是決定了Label的繪制方式,將它設(shè)置為NO將會使文本變暗,表示它沒有激活,這時向它設(shè)置顏色值是無效的, 默認為YES;

label.enable = NO;

8. ???? highlighted 是否高亮顯示,默認為NO

label.highlighted = YES; ?

label.highlightedTextColor = [UIColor orangeColor]; 高亮顯示時的文本顏色

9. ???? ShadowColor ? ? 設(shè)置陰影顏色

[label setShadowColor:[UIColorblackColor]];

10. ???? ShadowOffset ? ?? 設(shè)置陰影偏移量

[label setShadowOffset:CGSizeMake(-1,-1)];

11. ???? baselineAdjustment ?

如果adjustsFontSizeToFitWidth屬性設(shè)置為YES,這個屬性就來控制文本基線的行為。

label.baselineAdjustment = UIBaselineAdjustmentNone;

UIBaselineAdjustmentAlignBaselines = 0默認,文本最上端與中線對齊。

? ? UIBaselineAdjustmentAlignCenters,文本中線與label中線對齊。

UIBaselineAdjustmentNone,文本最低端與label中線對齊。

12. ???? Autoshrink ? ? 是否自動收縮FixedFontSize 默認,如果Label寬度小于文字長度時,文字大小不自動縮放minimumScaleFactor 設(shè)置最小收縮比例,如果Label寬度小于文字長度時,文字進行收縮,收縮超過比例后,停止收縮。minimumFontSize 設(shè)置最小收縮字號,如果Label寬度小于文字長度時,文字字號減小,低于設(shè)定字號后,不再減小。//6.0以后不再使用了。

label.minimumScaleFactor = 0.5;

13. ???? adjustsLetterSpacingToFitWidth ? ??

? ? ? ?改變字母之間的間距來適應(yīng)Label大小

? ? ? ?label.adjustsLetterSpacingToFitWidth = NO;

14. ???? lineBreakMode????設(shè)置文字過長時的顯示格式

label.lineBreakMode = NSLineBreakByCharWrapping;以字符為顯示單位顯示,后面部分省略不顯示。

label.lineBreakMode=NSLineBreakByClipping;剪切與文本寬度相同的內(nèi)容長度,后半部分被刪除。

label.lineBreakMode=NSLineBreakByTruncatingHead;前面部分文字以……方式省略,顯示尾部文字內(nèi)容。

label.lineBreakMode=NSLineBreakByTruncatingMiddle;中間的內(nèi)容以……方式省略,顯示頭尾的文字內(nèi)容。

label.lineBreakMode=NSLineBreakByTruncatingTail;結(jié)尾部分的內(nèi)容以……方式省略,顯示頭的文字內(nèi)容。

label.lineBreakMode=NSLineBreakByWordWrapping;以單詞為顯示單位顯示,后面部分省略不顯示。

15. ???? adjustsFontSizeToFitWidth????設(shè)置字體大小適應(yīng)label寬度

label.adjustsFontSizeToFitWidth = YES;

16. ???? attributedText ? ?? 設(shè)置標簽屬性文本。

NSString*text=@"first";

NSMutableAttributedString *textLabelStr = [[NSMutableAttributedStringalloc]initWithString:text]; ? ? ??

? ?[textLabelStrsetAttributes:@{NSForegroundColorAttributeName[UIColorlightGrayColor],NSFontAttributeName:????[UIFontsystemFontOfSize:17]} range:NSMakeRange(11,10)];

label.attributedText = textLabelStr;

17. ????豎排文字顯示每個文字加一個換行符,這是最方便和簡單的實現(xiàn)方式。

label.text=@"請\n豎\n直\n方\n向\n排\n列";

label.numberOfLines = [label.text length];(可以直接設(shè)置成數(shù)字)

18. ????計算UIlabel 隨字體多行后的高度

CGRect bounds = CGRectMake(0,0,200,300);

heightLabel = [label?textRectForBounds:bounds limitedToNumberOfLines:20];計算20行后的Label的Frame ??

NSLog(@"%f",heightLabel.size.height);

19. ????UILabel根據(jù)字數(shù)多少自動實現(xiàn)適應(yīng)高度

UILabel*msgLabel = [[UILabel alloc] initWithFrame:CGRectMake(15,45,0,0)];

msgLabel.backgroundColor=[UIColor lightTextColor];

[msgLabel setNumberOfLines:0];

msgLabel.lineBreakMode = UILineBreakModeWordWrap;

msgLabel.font = [UIFont fontWithName:@"Arial"size:12];

CGSize size = CGSizeMake(290,1000);

msgLabel.text = @"一個人 一首歌 一杯酒 一支煙 一部手機 一臺電腦 一杯清茶 一路清貧 一路走 一路停 一個遠方 一個你還沒到來 萬世孤獨";

CGSize msgSie = [msgLabel.text sizeWithFont:fontsconstrainedToSize:size];

[msgLabel setFrame:CGRectMake(15,45,290,msgSie.height)];

20. ???? 漸變字體

LabelUIColor *titleColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"btn.png"]];

NSString *title = @"Setting";

UILabel*titleLabel = [[UILabel alloc]initWithFrame:CGRectMake(0,0,80,44)];

titleLabel.textColor=titleColor;

titleLabel.text = title;

titleLabel.font = [UIFont boldSystemFontOfSize:20];

titleLabel.backgroundColor=[UIColor clearColor];

[self.view addSubview:titleLabel];

21. ??? ?Label添加邊框

titleLabel.layer.borderColor = [[UIColor grayColor] CGColor];

titleLabel.layer.borderWidth = 2;

22. 設(shè)置label內(nèi)邊距

? ? .h文件

??? @interface DrawRectLabel : UILabel

??? @property ( nonatomic , assign ) UIEdgeInsets edgeInsets;

??? @end

? ? .m文件 ? ? ?需要重寫方法: ?- ( void )drawTextInRect:(CGRect)rect

- (CGRect)textRectForBounds:(CGRect)bounds limitedToNumberOfLines:(NSInteger)numberOfLines{

?? UIEdgeInsetsinsets = self .edgeInsets;

?? CGRect rect = [ super textRectForBounds:UIEdgeInsetsInsetRect(bounds, insets)limitedToNumberOfLines:numberOfLines];

rect.origin.x? ? -= insets.left;

?? rect.origin.y? ? -= insets.top;

rect.size.width? += (insets.left+ insets.right);

rect.size.height+= (insets.top+ insets.bottom);

return rect;

}

iOS開發(fā):檢測UITextField文本框的狀態(tài)

全局登錄button

1.1需要在- (void)viewWillAppear:(BOOL)animated方法添加通知中心

- (void)viewWillAppear:(BOOL)animated{

[super viewWillAppear:animated];

//添加通知中心

//添加文本框通知中心

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(gosave:) name:UITextFieldTextDidChangeNotification object:nil];

//selector是選擇器,Observer是觀察者,name是檢測的類型 object填nil就行

//這里檢測的是文本框text值改變的時候,另外還可以檢測:

UITextFieldTextDidBeginEditingNotification;開始編輯時

UITextFieldTextDidEndEditingNotification;結(jié)束編輯時

UITextFieldTextDidChangeNotification;值改變時

}

1.2在當前視圖控制器的.m中實現(xiàn)gosave方法

- (void)gosave:(NSNotification *) Notification{

UITextField * textField = Notification.object;

if (self.phoneTextFld.text.length == 11 self.codeTextFld.text.length == 4 [XSTTools judgeWithPhone:self.phoneTextFld.text andWithPwd:nil andWithCode:self.codeTextFld.text andShowView:self.view]) {

//這個if判斷是我自己項目需求寫的,你可以根據(jù)自己項目來寫,只需要在滿足條件的時候?qū)utton的selected設(shè)置為YES不滿足條件設(shè)置為NO即可

self.loginButton.selected = YES;

self.loginButton.userInteractionEnabled = YES;

}else{

1.3移除通知中心

- (void)viewWillDisappear:(BOOL)animated{

[super viewWillDisappear:animated];

//移除通知中心

[[NSNotificationCenter defaultCenter] removeObserver:self name:UITextFieldTextDidChangeNotification object:nil];

[self.timer invalidate];

}

1.當然上面只是一個很小的用法,你可以擴展其他用法,比如還可以檢測鍵盤的高度來實現(xiàn)對uikit控件的frame上移和下拉。這個用法主要用在當textField文本框被彈出鍵盤遮擋時。

ps:需要注意的是:

1.1添加通知中心一定要寫在視圖即將顯示的方法-(void)viweWillApper:(animated)里面,不能寫在-(void)viewDidLoad里面。

1.2視圖即將消失的時候?qū)⑼ㄖ行囊瞥?,不然會有?nèi)存泄露。

因為:viewDidLoad只會在UIViewController的實例化對象push或者present的時候執(zhí)行一次。所以當我們返回這個視圖的時候通知中心已經(jīng)移除了,就會出錯。

iOS 開發(fā)-UITextView(第二種輸入框)的使用

text ? ?設(shè)置文本顯示內(nèi)容

backgroundColor ? ? 設(shè)置背景色

scrollEnabled ? ? 當文本內(nèi)容超出視圖邊框時是否允許滑動, 默認為YES

editable ? ? 設(shè)置是否允許編輯文本內(nèi)容 默認為YES(可編輯)

delegate ? ? 設(shè)置代理方法的實現(xiàn)類

font ? ? 設(shè)置字體名字和大小

returnKeyType ? ? 設(shè)置鍵盤上的return鍵的類型

keyboardType ? ? 鍵盤類型

textAlignment ? ?文本內(nèi)容居左還是居中還是居右

dataDetectorTypes????顯示數(shù)據(jù)類型的連接模式(如電話號碼、網(wǎng)址、地址等)

textColor ? ?設(shè)置文本內(nèi)容字體顏色

autocapitalizationType ? ?輸入類型

autocorrectionType ? ?是否自動更正

secureTextEntry ????安全文本輸入

keyboardAppearance ????鍵盤外觀

- (BOOL)textViewShouldBeginEditing:(UITextView*)textView; ? ?將要開始編輯

- (BOOL)textViewShouldEndEditing:(UITextView*)textView; ? ??將要結(jié)束編輯

- (void)textViewDidBeginEditing:(UITextView*)textView; ? ??開始編輯

- (void)textViewDidEndEditing:(UITextView*)textView; ? ??結(jié)束編輯

- (BOOL)textView:(UITextView*)textViewshouldChangeTextInRange:(NSRange)range replacementText:(NSString*)text; ? ??內(nèi)容將要發(fā)生改變編輯

?- (void)textViewDidChange:(UITextView*)textView; ? ??內(nèi)容發(fā)生改變編輯

- (void)textViewDidChangeSelection:(UITextView*)textView; ? ??焦點發(fā)生改變

4.?UITextView限制字數(shù)


網(wǎng)頁標題:ios開發(fā)文本,iOS開發(fā)文檔
網(wǎng)址分享:http://fisionsoft.com.cn/article/dsdhhei.html