Изменение цвета точек UIPageControl в MonoTouch - PullRequest
4 голосов
/ 27 апреля 2011

Мне было интересно, позволяет ли MonoTouch разработчику изменять цвет точек UIPageControl в соответствии со светлым фоном - они кажутся фиксированными белыми, что затрудняет их просмотр на светлом фоне.

Я знаю, что для этого нет общедоступного API, но мне было интересно, было ли что-то реализовано внутри MonoTouch, чтобы улучшить это.

В противном случае, каков рекомендуемый подход к использованию UIPageControl на светлом фоне?

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

Я попытался перевести это. Я не уверен, что это будет работать, но это компилируется. Обратите внимание, что на странице, на которую ссылаются, содержатся комментарии, указывающие, что Apple не одобряет этот код и может отклонить его:

using System;
using MonoTouch.Foundation;
using MonoTouch.UIKit;

namespace Whatever
{
    public class StyledPageControl : UIPageControl
    {
        public StyledPageControl () : base()
        {
        }

        public override int CurrentPage {
            get {
                return base.CurrentPage;
            }
            set {
                base.CurrentPage = value;
                string imgActive = NSBundle.MainBundle.PathForResource("activeImage", "png");
                string imgInactive = NSBundle.MainBundle.PathForResource("inactiveImage", "png");
                for (int subviewIndex = 0; subviewIndex < this.Subviews.Length; subviewIndex++)
                {
                    UIImageView subview = this.Subviews[subviewIndex] as UIImageView;
                    if (subviewIndex == value) 
                        subview.Image = UIImage.FromFile(imgActive);
                    else
                        subview.Image = UIImage.FromFile(imgInactive);
                }
            }
        }

        public override int Pages {
            get {
                return base.Pages;
            }
            set {
                base.Pages = value;
                string img = NSBundle.MainBundle.PathForResource("inactiveImage", "png");
                for (int subviewIndex = 0; subviewIndex < this.Subviews.Length; subviewIndex++)
                {
                    UIImageView subview = this.Subviews[subviewIndex] as UIImageView;
                        subview.Image = UIImage.FromFile(img);
                }
            }
        }
    }
}
0 голосов
/ 20 августа 2012

Я объединил это и это для однотона.Надеюсь, это поможет.

Использование выглядит следующим образом:

_pager.Change += delegate(object sender, EventArgs e) {
var pc =  sender as PageControl;
Console.WriteLine ("Change Delegate== " + pc.currentPage);

var toPage = pc.currentPage;
var pageOffset = _scroll.Frame.Width*toPage;
PointF p = new PointF(pageOffset, 0);
Console.WriteLine (pageOffset);
_scroll.SetContentOffset(p,true);
};

И вот такой класс.

0 голосов
/ 27 апреля 2011

Преобразование следующего кода в C #: http://apptech.next -munich.com / 2010/04 / customizing-uipagecontrols-look.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...