[英]Display images in ScrollView
我想在滾動視圖中顯示一些圖像,但是遇到一些問題。
這是我所擁有的:
- (void)viewDidLoad
{
[super viewDidLoad];
myObject = [[NSMutableArray alloc] init];
[myObject addObject:@"tut_5.jpg"];
[myObject addObject:@"tut_2.jpg"];
[myObject addObject:@"tut_3.jpg"];
[myObject addObject:@"tut_4.jpg"];
pageControlBeingUsed = NO;
CGRect screenRect = [[UIScreen mainScreen] bounds];
CGFloat screenWidth = screenRect.size.width;
CGFloat screenHight = screenRect.size.height;
for (int i = 0; i < [myObject count]; i++) {
CGRect frame;
frame.origin.x = self.takeTourScrollView.frame.size.width * i;
frame.origin.y = 0;
frame.size = self.takeTourScrollView.frame.size;
NSString *val = [myObject objectAtIndex:i];
UIImage* theImage = [UIImage imageNamed:val];
UIImageView *img=[[UIImageView alloc] initWithFrame:CGRectMake(screenWidth*i,0,185 ,284)];
img.image = theImage;
[self.takeTourScrollView addSubview:img];
}
第一張第一張圖片似乎還不錯。
然后,當我向左滑動時,我得到一個空白屏幕
我再次向左滑動,然后看到第二張照片。 對於所有4張圖像,它都是這樣。
有什么想法我做錯了嗎?
我建議對這種行為使用UITableView
/ UICollectionView
。 您可以在每個單元格中設置圖像,它們將被重用-在內存管理方面會更好。
tableView將順便將所有元素放置在適當的位置(您只需要定義單元格或布局的高度)即可。
它還可以根據事件(例如電話旋轉)正確調整大小。
另外,您應該避免對尺寸進行硬編碼:
CGRectMake(screenWidth*i,0,185 ,284)
如果設備較小/較大,您將失敗。 一段時間后維護代碼會很痛苦。
-編輯-
@Duncan C發布答案后,我注意到您正在尋找分頁系統。 您可以在UIPageViewController
或UICollectionView
上構建自己的解決方案。 但是您也可以使用第三方庫,我真的很喜歡這一類庫: https : //www.cocoacontrols.com/controls/bwwalkthrough 。 它支持不同的動畫,並為您做很多事情:)。
有些系統組件將以更少的工作量和更精致的用戶體驗為您提供所需的內容。 正如Vive在回答中提到的,使用UICollectionView
是一種可能性。 我的建議是UIPageViewController
。 蘋果有一個名為PhotoScroller的示例應用程序,該應用程序展示了如何非常像您所描述的那樣實現UI。 在Xcode文檔中搜索“ PhotoScroller”以找到它。
您已經設置了uiscrollview的x位置。 不需要設置UIImageView的x位置。因為您使用imageview作為uiimagescrollview的子視圖。 將此行更改為
UIImageView *img=[[UIImageView alloc] initWithFrame:CGRectMake(screenWidth*i,0,185 ,284)];
與
UIImageView *img=[[UIImageView alloc] initWithFrame:CGRectMake(0,0,185 ,284)];
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.