Wie man floating-anzeigen?

Was ich damit meine, floating-anzeigen benutzerdefinierte Ansicht, eine unteransicht (oder zu sein scheint eine Untersicht) der scrollview die Schriftrollen zusammen, bis es Anker auf bestimmten Punkt. Ein ähnliches Verhalten wäre UITableView Abschnitts-header. Bild unten

Wie man floating-anzeigen?

Meine Inhalte-Ansicht (die Ansicht unterhalb des schwimmenden Blick) nicht in tableview layout. Das heißt, wenn ich verwenden tableview nur für die floating-anzeigen, ich muss meinen Inhalt anzeigen innerhalb 1 giant cell oder brechen Sie auf mehrere Zellen mit verschiedenen layouts. Die content-view wird eine Menge von dynamischen Elementen, das ist, warum ich nicht wollen, legte es in UITableViewCell, es sei denn, ich muss. Kann ich machen schwimmende Ansicht programmgesteuert ändern /mit autolayout auf scrollview?

  • Dies ist ein in Erster Linie Stellungnahme-basierte Frage, bitte melden, weitere details über Ihr Problem.
  • Ich traf es auch vor, meine Erfahrung ist mit auto-layout scheint nicht so gut, irgendwann hat es einige Verzögerung animation, und ich benutze KVO, es ’s viel besser. durch die Art und Weise , mit Hilfe der Tabelle anzuzeigen ist einfacher als Sie sagte
  • Sie sagte: „ich brauche nicht eine tableview für die Seite“, aber technisch haben Sie ausgeschlossen, die offensichtliche Lösung zu verwenden schwebenden Abschnitt Kopf-und zeigt ohne jede Anstrengung, um alle anderen Lösungen, Sie fiel nur eine Nachfrage hier, um Ihr problem zu lösen, indem Sie jemand anderes irgendwie anderes – das ist nicht die Art und Weise, wie eine Frage aufwerfen, die hier.
  • Das ist schlechte Formulierung meinerseits. Ich habe erklärt, warum ich lieber nicht verwenden tableview. Ich weiß, wie Sie floating Abschnitt Kopf-und ich möchte wissen, ob es bessere alternativen gibt. Ich habe versucht andere Lösungen gefragt, für Empfehlungen und frühere Kommentator denke, es ist eine Meinung-basierend Frage, die ist, warum ich bearbeitet gerade „Wie“ – Frage. Danke für die Vorschläge, ich bin neu hier und noch lernen, wie man Fragen richtig 🙂



2 Replies
  1. 2

    Mithilfe der tableview Abschnitt ist wohl die beste Lösung, können Sie immer leicht anpassen, die Anzahl der Zellen oder Zellen, die sich zur Erreichung eines bestimmten layout.

    Allerdings, wenn Sie definitiv nicht wollen, um mit einem tableview, diese Komponente scheint wirklich cool, es ist eigentlich gedacht, um Hinzugefügt werden, um eine tableview, aber getestet habe ich es mit dem twitter-Beispiel und Sie können tatsächlich fügen Sie einen scrollview, so brauchen Sie nicht eine Tabelle anzeigen, und es wird funktionieren, geben Requisiten der Kerl, der es geschafft hat. GSKStretchyHeaderView

    Hoffe, das hilft, Kommentar, wenn Sie irgendwelche Fragen haben, viel Glück.

  2. 0

    Verwenden KVO zu aktualisieren, die floating-anzeigen, Rahmen.

    Hier ist der Beispiel-code in Objective-C geschrieben:

    //ScrollView.m
    //ScrollView is a subclass of UIScrollView
    
    @interface ScrollView ()
    
    @property (nonatomic, strong) UIView *floatingView;
    @property (nonatomic) CGRect originalBorderFrame;
    @property (nonatomic) CGFloat anchorHeight;
    
    @end
    
    @implementation ScrollView
    
    
    - (instancetype)initWithFrame:(CGRect)frame {
        self = [super initWithFrame:frame];
    
        if (self) {
            self.floatingView = [UIView new];
            self.floatingView.backgroundColor = [UIColor colorWithRed:0.8211 green:0.5 blue:0.5 alpha:1.0];
            self.floatingView.frame = CGRectMake(0, 150, frame.size.width, 20);
            self.originalBorderFrame  = self.floatingView.frame;
            [self addSubview:self.floatingView];
    
            self.anchorHeight = 44;
    
            [self addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil];
        }
    
        return self;
    }
    
    - (void)dealloc {
        [self removeObserver:self forKeyPath:@"contentOffset"];
    }
    
    - (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id> *)change context:(void *)context {
        if ([keyPath isEqualToString:@"contentOffset"]) {
            if (self.contentOffset.y > self.originalBorderFrame.origin.y-self.anchorHeight) {
                self.floatingView.frame = CGRectOffset(self.originalBorderFrame, 0, self.contentOffset.y - (self.originalBorderFrame.origin.y-self.anchorHeight));
            }
        }
    }
    @end

    Hier ist die capture -:

    Wie man floating-anzeigen?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.