Objective-C – iOS-Gleitproblem bezüglich Tableview oder ScrollView
PHP中文网
PHP中文网 2017-06-20 10:06:07
0
1
775

Da der Titel
so lautet
Der Effekt, den ich erzielen möchte, ist
beim Herunterscrollen, wie im Bild unten

Dies wird mit der Tabellenansicht erstellt. Wenn Sie es hierher schieben, wird es nicht verschoben, wenn die blaue Farbe nicht die Hälfte des Bildschirms erreicht (ungefähr diese Position wird funktionieren). die erste Reihe, die nur die rote ist, ist in Ordnung, wenn sie größer ist, wie unten gezeigt

Es wird automatisch in die blaue Zeile verschoben, um die direkte Attributsteuerung zu ermöglichen. Bitte antworten Sie

PHP中文网
PHP中文网

认证高级PHP讲师

Antworte allen (1)
学霸

你说的是卡片布局吧, 用UICollectionView和自定义UICollectionViewFlowLayout就可以实现, Demo地址

// 修改cell滑动时大小 - (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect { NSArray *attrs = [[NSArray alloc] initWithArray:[super layoutAttributesForElementsInRect:self.collectionView.bounds] copyItems:YES]; CGFloat scale; CGFloat offset; for (UICollectionViewLayoutAttributes *attr in attrs) { // 设置collection在滑动时, cell的大小 if (self.scrollDirection == UICollectionViewScrollDirectionHorizontal) { offset = fabs(attr.center.x - self.collectionView.contentOffset.x - self.collectionView.bounds.size.width * 0.5); scale = 1 - offset / (self.collectionView.bounds.size.width * 0.5) * 0.25; attr.transform = CGAffineTransformMakeScale(scale, scale); } else { offset = fabs(attr.center.y - self.collectionView.contentOffset.y - self.collectionView.bounds.size.height * 0.5); scale = 1 - offset / (self.collectionView.bounds.size.height * 0.5) * 0.25; } attr.transform = CGAffineTransformMakeScale(scale, scale); } return attrs; } // 返回collection滑动手指松开后, collection最终的contentOffset - (CGPoint)targetContentOffsetForProposedContentOffset:(CGPoint)proposedContentOffset withScrollingVelocity:(CGPoint)velocity { if (self.scrollDirection == UICollectionViewScrollDirectionHorizontal) { // cell 宽度 CGFloat itemW = self.itemSize.width; // cell边框距离(未设置collection的contentInset, 默认为0) CGFloat margin = self.collectionView.contentInset.left; // collection在手指松开后,collection滑动到停止时, collectioncontentOffset CGFloat index = roundf((proposedContentOffset.x + margin) / itemW); // 修改collection最终的contentOffset, 使collection滑动到cell中间 proposedContentOffset.x = index * self.collectionView.bounds.size.width - (index + 1) * margin; } else { CGFloat itemH = self.itemSize.height; CGFloat margin = self.collectionView.contentInset.top; CGFloat index = roundf((proposedContentOffset.y + margin) / itemH); proposedContentOffset.y = index * self.collectionView.bounds.size.height - (index+1) * margin; } return proposedContentOffset; }
    Neueste Downloads
    Mehr>
    Web-Effekte
    Quellcode der Website
    Website-Materialien
    Frontend-Vorlage
    Über uns Haftungsausschluss Sitemap
    Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!