2017年6月27日 星期二

Xamarin IOS:label中的Attributed Text怎麼用啊?

剛開始做xamarin畫面設計時真的是抱怨連連,尤其是習慣了html的人
雄雄想要在文字標籤中加個底線,卻一直不知如何著手.
label物件中有個文字屬性叫AttributedText,就可以派上用場了
(事實上你在GUI builder中找label的"text"屬性欄位,就Plain & Attribute,但是你選了「Attributed」會出現「not support in this version」.....沒錯啦,在xcode設計工具中是有的選)
回到問題,要做個堂堂正正的...不,要做有個底線的文字標籤,就參考以下的做法:
----------------------------------------
myLabel.AttributedText = new NSAttributedString(
                "別踩了我的底線",
                underlineStyle: NSUnderlineStyle.Single);
----------------------------------------

事實上這個機制,還可以套用更複雜的html語法
==================================
var attr = new NSAttributedStringDocumentAttributes();
            var nsError = new NSError();
            attr.DocumentType = NSDocumentType.HTML;

            var myHtmlText = "<u>I服了 You</u>";
            var myHtmlData = NSData.FromString(myHtmlText, NSStringEncoding.Unicode);
            myLable.AttributedText = new NSAttributedString(myHtmlData, attr, ref nsError);
==========================
來源參考:
1.https://forums.xamarin.com/discussion/23670/how-to-display-html-formatted-text-in-a-uilabel
2.https://stackoverflow.com/questions/15643232/underline-text-in-uilabel-in-monotouch-porting-objc-code
3.https://www.youtube.com/watch?v=5-ZnV3jQd9I

以上,加油了!!

2017年6月12日 星期一

for Xamarin IOS : 為什麼「 NSData.FromString(uri)」總是傳回空(null)值!?

公司已經把觸手從賣場伸向行動設備了
原本在pos上的資源可以用http下載的方式跟手機平台契合
在做商品查詢中一定會用到圖片下載
明明在公司內部網路就正常,
可是一旦用internet時,「var data=NSData.FromString(uri)」就會傳回空值,連帶接下來的「UIImage.LoadFromData(data);」它就死掉了
Google一下,原來這個URL是要用https才行,
蘋果真的是太龜毛了可是我就是要用非https的網路資源啊也不是無可救藥啦只要在info.plist最後加上這個設定
==========================
<key>NSAppTransportSecurity</key>
 <dict>
    <key>NSAllowsArbitraryLoads</key> 
   <true/>  
</dict>
 ================================
就可以了來源在這裡
大家一起加油吧

2017年6月5日 星期一

for Extjs4 ,如何正確使用Ext.TaskManager.start & Ext.TaskManager.stop

範例如下:
===================================
var config = {


    msg: 'Display Time',
    modal: true,
    buttons: Ext.Msg.OKCANCEL,
    fn: displayTime
}

Ext.MessageBox.msgButtons[0].setText('Start');
Ext.MessageBox.msgButtons[3].setText('Stop');

Ext.MessageBox.show(config);

function start_task() {
   Ext.MessageBox.updateText('????:' + Ext.util.Format.date(new Date(), 'Y-m-d g:1:s A'));
}

var task = { // moved outside function so it was not called over and over
    run: start_task,
    scope: this,
    interval: 1000
}

function displayTime(id) {
 
    if (id == 'ok') {
       // task was here ... was not always defined due to if statement; was also recalled each time
       Ext.TaskManager.start(task);
    } else {
        Ext.MessageBox.updateText('Paused!');
        Ext.TaskManager.stop(task);
    }
};
============I tried,it works===========================
來源網址在此
大家一起加油吧