Frage

Ich mag die Höhe eines UIPickerView in meinem iPhone App reduzieren, so dass es nur eine Zeile und eine Spalte. Die Höhe der Picker Ansicht sollte auf die Höhe einer Zeile gleich sein.

Ich bin mit Interface Builder die UIPickerView zu konstruieren, aber ich kann nicht eine einfache Möglichkeit, die Größe neu bestimmen diese Kontrolle finden.

Wie schrumpfen Sie UIPickerView?

War es hilfreich?

Lösung

Eigentlich kann man leicht die ganze UIPickerView schrumpft zu einer einschließe Ansicht eines affinen Transformation anwenden. Zum Beispiel:

CGSize pickerSize = [pickerView sizeThatFits:CGSizeZero];

pickerTransformView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, pickerSize.width, pickerSize.height)];
pickerTransformView.transform = CGAffineTransformMakeScale(0.75f, 0.75f);

[pickerTransformView addSubview:pickerView];
[self.view addSubview:pickerTransformView];
[pickerTransformView release];

einen Picker auf 75% seiner ursprünglichen Größe skalieren, indem sie innerhalb einer enthaltenden Ansicht platzieren und eine Skalierung zu dieser Ansicht Transformation anwenden. eine Transformation direkt an den UIPickerView Anwendung führt zu unerwünschter Zeichnung Artefakte.

Allerdings ist die Art von Größe ändern Sie suchen am besten durch die Schaffung einer Zollkontrolle bedient würden.

Andere Tipps

Es ist möglich und ganz einfach!

Öffnen Sie einfach die NIB-Datei als Nur-Text, dann die Picker-Ansicht finden und stellen Sie die Maßnahmen:

<object class="IBUIPickerView" id="783900772">
<reference key="NSNextResponder" ref="191373211"/>
<int key="NSvFlags">292</int>
<string key="NSFrame">{{85, 68}, {150, 116}}</string>

Das ist alles!

Erstellen Sie eine einfache UIView in Interface Builder. Set gewünschte Position und Größe, fügen Einschränkungen. Überprüfen Sie "Clip Subviews" Checkbox. Dann per Drag & Picker Blick in dieser Ansicht als Subview fallen. Hinzufügen von Abhängigkeiten für Kommissionierer horizontal und vertikal innerhalb des Behälters auszurichten. Sollte die Arbeit machen.

Die Antwort von user2248258 tatsächlich funktioniert, wenn Sie Storyboards und / oder automatisches Layout verwenden. Ich würde es gerne Screenshots hinzufügen, wie Nilambar vorgeschlagen.

  1. legen Sie eine picker in einen anderen Behälter Ansicht mit der Größe wollen Sie es Legen Sie eine picker in einen anderen Behälter Ansicht

  2. prüfen clipSubviews für den Container Ansicht

  3. Ausrichten den Picker horizontal und vertikal in dem Behälter zentriert Ansicht, geben es auch Null Einschränkungen für die hinteren und vorderen Ort

Auf diese Weise der Picker-Ansicht wird auf die richtige Größe abgeschnitten (wird nicht geändert werden).

Ergebnis: eingeben Bild Beschreibung hier

Soweit ich weiß, wird es vermasselt, wenn Sie es schrumpfen.

a) UITableView+UIPickerView
Ich empfehle Ihnen, die „eine Zeile in UITableView+UIPickerView, dies zu tun. Sie eine Zeile in Tableview wie die Dropdownlist in Windows verwenden können, wenn Sie auf dieser Zeile tippen die picker (versteckt zunächst) zeigen.

b) Wenn Sie eine lange Liste von Daten in Tableview haben und nur eines der Elemente benötigt Daten zu holen, sollten Sie die Ansicht blättern Sie die folgende Methode verwenden (stellen Sie sicher, dass die ursprüngliche Position von picker zu berechnen, wie es / unten zusammen nach oben bewegt wird) :


-(void)setViewMove:(BOOL)moveUP offset:(CGFloat)offset
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:0.3];
    CGRect rect = self.view.frame;

    if(moveUP)
    {
        rect.origin.y-=offset;
        rect.size.height+=offset;
    }
    else    //move down
    {
        rect.origin.y+=offset;
        rect.size.height-=offset;
    }
    self.view.frame = rect;
    [UIView commitAnimations];
}

c) Sie können auch eine andere Ansicht für den Picker hinzufügen und diese Ansicht zurück, wenn Sie etwas ausgewählt haben.

Meine Schlussfolgerung ist:
Wenn Sie nur wenige Zeilen in Tableview haben, verwenden Sie ein.
Wenn Sie viele Zeilen in Tableview, aber nur einer von ihnen muss Picker, verwenden b.
Wenn Sie viele Zeilen in Tableview und viele von ihnen brauchen Picker, Gebrauch c haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top