Наложение CA на UISegmentedControl перезаписывается в iOS5

#c# #uikit #xamarin.ios #ios5 #calayer

#c# #uikit #xamarin.ios #ios5 #calayer

Вопрос:

У меня есть следующий код, который в iOS 4 создает вид «отключенного» UISegmentedControl. Как заметит внимательный читатель, я разрабатываю в MonoTouch, следовательно, синтаксис c #.

 private void MakeOverlayOnLastRatingSegment()
{
    RemoveOverlayOnLastRatingSegment();

    lastRatingDisabledLayer = new CALayer();
    lastRatingDisabledLayer.Frame = new RectangleF(new PointF(0, 0), segmLastRating.Frame.Size);

    lastRatingDisabledLayer.CornerRadius = 10.0f;
    lastRatingDisabledLayer.BackgroundColor = UIColor.FromRGBA(0.5f, 0.5f, 0.5f, 0.2f).CGColor;
    segmLastRating.Layer.AddSublayer(lastRatingDisabledLayer);
}
  

И результат:

Отключен UISegementedControl в iOS4

Но в iOS5 результат немного отличается. Сегмент перед выбранной ячейкой записывается поверх моего серого слоя. Это требует немного пристального взгляда — более очевидного на реальном устройстве, а не на симуляторе. По какой-то причине screendump из симулятора очень легкий.

Отключен UISegmentedControl в iOS5

Кто-нибудь еще сталкивался с этим, и у кого-нибудь есть обходной путь?

С наилучшими пожеланиями / Anders

Комментарии:

1. у вас есть ответ? я сталкиваюсь с проблемой sam?

2. К сожалению, мое решение стало «жить с этим». Это очень слабый зуд видимости. Я пришел к выводу, что вряд ли какой-либо пользователь будет наблюдать, еще меньше будет раздражать, и абсолютно никто не будет критиковать продукт за это. Итак, мы живем с этим, но если вы найдете решение, пожалуйста, опубликуйте его.

Ответ №1:

Не могли бы вы добавить свой слой наложения к слою супервизора сегментированного элемента управления? Или, может быть, суперслой слоя сегментированного элемента управления?