Objective C

  • 在Objective C專案內,使用Swift Class的步驟

    • 先從Xcode的 File -> New -> File新增檔案,在最後會詢問要不要自動新增ProjectName-Bridging-Header.h檔案,請選擇 Yes
    • 在剛剛新增的Swift檔案內,宣告的Class前面新增 @objc ,如下

      @objc class SwiftViewController: UIViewController {

    • 在Xcode的Project和Target的Build Settings內,把參數設定成下面的值

    • Always Embed Swift Standard Libraries = YES
    • Defines Module = YES
    • Objective-C Generated Interface Header Name = -Swift.h
    • Install Objective-C Compatibility = YES
    • 在想要使用Swift Class的objective-C檔案內 #import "projectName-Swift.h"
    • 在Xcode的 Product 內選擇 Clean(Shift + Cmd +K)
    • 重新 Run(Cmd + R)
  • 從OC內呼叫Swift的ViewController的方式

    • 先獲得Storyboard,再抓到ViewContrller,最後present出來

      UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
      UIViewController * vc = [storyboard instantiateViewControllerWithIdentifier:@"viewContrllerIdentifierName"];
      [self presentViewController:vc animated:YES completion:nil];
      
  • 計算字串所需要的寬度和高度

    • 使用NSTextAlignmentToCTTextAlignment

      CGRect rec = [model.msg boundingRectWithSize:CGSizeMake(260 / kWidthScale, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14.0]} context:nil];
      
      • model.msg:你要計算的字串
      • CGSizeMake(width, CGFLOAT_MAN):通常給寬度,讓函式算高度
      • options:算多行請用NSStringDrawingUsesLineFragmentOrigin
      • attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:14.0]} 字體的資訊
      • context:通常為nil
  • 改變標籤的字體大小

    [nameLabel setFont:[UIFont fontWithName:@"Arial" size:15]];
    ------------------ or this way ------------------
    UIFont * font = typeLabel.font;
    [nameLabel setFont:[UIFont fontWithName:font.fontName size:15]];
    

results matching ""

    No results matching ""