سؤال

أحاول عرض NSTableView من:

| thumbnail |. اسم الملف |

لقد أنشأت NSTableView في IB وفدها إلى فئة. في الفصل، تجاوزت نموذجا فقط للحصول على تطبيق POC وإنشاء أساليب مفوض مصدر البيانات. إنهم يملكون الخلايا النصية على ما يرام. ومع ذلك، الآن أنا في الخطوة حيث تحتاج الخلية الأولى إلى احتواء صورة مصغرة صغيرة للصورة.

ما أريد أن أفعله (وأنا متأكد من أنه بسيطة غبية) هو الاستيلاء على أيقونة الصورة - ومن العدل أن نفترض أن جميع الملفات هي JPEGS ولها مصغرة مضمنة - ووضع أيقونة، تم تحجيمها إلى 64x64 في الجدول خلية - زنزانة. هناك الكثير من التعليمات البرمجية حول كيفية توليد الصور المصغرة، لكنني لا أرى الكثير مما يجعلني لأعمل رمز العمل. إليك ما لدي:

  # This works if I am only populating text values in the when 'Image'
  def tableView_objectValueForTableColumn_row_(image_table, column, row)
    thumbnailImage(75)
    case column.headerCell.stringValue
      when 'File Name'
        (0..99).to_a[row].to_s
      when 'Image'
        # here's where I want to return a square 64x64 image or ImageCell
        thumbnailImage(64)
      else
        '???'
    end
  end

  # Creates square thumbnail
  def thumbnailImage(size)
    file = "file://localhost/Users/sxross/Downloads/iStock_000004561564XSmall.jpg"
    image = CGImageSourceCreateWithURL(CFURLCreateWithString(nil, file, nil), nil)
    thumb = CGImageSourceCreateThumbnailAtIndex(image, 0, nil)
    thumb
  end

  def numberOfRowsInTableView(view)
    100
  end

ما أقوم به هو ما هي الخطوات المفقودة للحصول على طريقة Thumbnailimage لتزويدني بشيء يمكن أن يكون كائن بيانات مناسب للعودة من مصدر البيانات.

أي مساعدة موضع تقدير مثير للدهشة.

راجع للشغل: iknowiknowiknow، يجب أن أستخدم macrouby ولكنه لا يعمل على ثنائي النواة 32 بت. للأسف.

هل كانت مفيدة؟

المحلول

تجاوزت نموذج ...

لا تفعل ذلك. في الكاكاو، من الأسهل القيام بالأشياء بنموذج من دون.

ما أقوم به هو ما هي الخطوات المفقودة للحصول على طريقة Thumbnailimage لتزويدني بشيء يمكن أن يكون كائن بيانات مناسب للعودة من مصدر البيانات.

CGImageSourceCreateThumbnailAtIndex إرجاع cgimage. انت تحتاج tableView_objectValueForTableColumn_row_ لإرجاع nsimage. لذلك، استخدم NSIMAGE initWithCGImage_size_ طريقة.

إذا كنت تقوم بتشغيل الفهد، فلا تتوفر هذه الطريقة، لذلك ستحتاج إلى إنشاء NSBITMAPIMAGEREP مع CGIMAGE بدلا من ذلك، ثم قم بإنشاء NSIMAGE من الحجم الصحيح وإضافة هذا التمثيل إليه.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top