كيف يمكنني تسليط الضوء يدويا على nspopupbuttoncell عند رسمها (ارسمها باستخدام الأبيض بدلا من الأسود)؟

StackOverflow https://stackoverflow.com/questions/1162414

سؤال

لدي خلية مخصصة تتكون من عدة خلايا، واحدة منها هي nspopupbuttoncell.

عند رسم خلية مخصصة، أرغب في التمييز بين جميع الخلايا الفرعية أيضا (عادة عن طريق تحويل الأبيض).

مع، على سبيل المثال nstextcell، إذا اتصلت setHighlighted:YES قبل الاتصال drawWithFrame:inView سيتم رسم الخلية بالنص الأبيض، تماما كما أريدها.

هذا لا يعمل مع nspopupbuttoncells. لا يزال النص فقط في الرسم أسود.

يبدو أن هذا يجب أن يكون ممكنا، لأن إسقاط nspopupbuttoncell في أبرز الضوء بشكل صحيح.

هل يمكن لأشادني شخص ما في الاتجاه الصحيح لإصلاح هذا؟

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

المحلول

أين تستضيف هذه الفئة الفرعية Custom + Composite Subclass؟

-للضوء: نعم ليس ما تبحث عنه. من الوثائق:

بشكل افتراضي، هذه الطريقة لا تفعل شيئا. يتجاوز فئة NSButtoncell هذه الطريقة لرسم الزر مع المظهر المحدد بواسطة NSCelllightSBackgrounground أو NSCelllightByContents أو NSCelllightSByGray.

عادة ما تحدد طريقة العرض المضيف لخلية نمط خلفية الخلية، وسوف تستخدم الخلية في وقت رسم الوقت لعرض نفسها بشكل مناسب. نشر نمط الخلفية من الخلية الرئيسية إلى الخلايا الفرعية.

- (void)drawInteriorWithFrame:(NSRect)cellFrame inView:(NSView *)controlView
{
    NSRect textRect, popUpRect;
    NSDivideRect(cellFrame, &textRect, &popUpRect, NSWidth(cellFrame) / 2, NSMinXEdge);

    /* Draw the text cell (self) */
    [super drawInteriorWithFrame: textRect inView: controlView];

    /* Draw our compound popup cell - create & release every time drawn only in example */
    NSPopUpButtonCell *popUpCell = [[NSPopUpButtonCell alloc] initTextCell: @"popup title"];
    [popUpCell setBordered: NO];
    [popUpCell setBackgroundStyle: [self backgroundStyle]];
    [popUpCell drawWithFrame: popUpRect inView: controlView];
    [popUpCell release];
}

إذا كنت تستضيف هذه الخلية المركبة في NSTABLEView، فسيكون ذلك كافية للحصول على الخلفية الصحيحة للصفوف المحددة.

إذا كنت تستضيف هذا في وجهة نظرك الخاصة، فقد تحتاج إلى القيام بعمل إضافي. (وتحتاج إلى تقديم تفاصيل إضافية حول البيئة المضيفة قبل أن نتمكن من تقديم المشورة.)

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