在 UIScrollView 中添加和定位 UIButtons 数组
Posted
技术标签:
【中文标题】在 UIScrollView 中添加和定位 UIButtons 数组【英文标题】:Adding and positioning Array of UIButtons in UIScrollView 【发布时间】:2016-01-15 12:05:09 【问题描述】:首先,这里是screenshot of my ViewController in Action。
我的 ViewController
包含嵌入式 YouTube 视频,下面是 UIScrollView
,在他下面是 UITableView
,现在是随机填充的。我想从特定歌手那里获取所有专辑,并为每个人提供一个单独的UIButton
,如屏幕截图所示 ->
svi, lek za spavanje, 巴尔干
问题是,我会从YouTube API
得到所有专辑,所以我不知道歌手有多少专辑。我必须在 Swift 中以编程方式添加 UIButtons。
在我的语言中,“svi”的意思是“全部”,所以当我点击“svi”时,我应该会在UITableView
中看到它下面列出的所有专辑。同样,所有专辑和“svi”(“all”)都应该在UIScrollView
中,所以当用户点击“Balkan”时,UITableView
应该填充来自该“Balkan”专辑的所有曲目.
根据顶部提供的屏幕截图,谁能建议我如何在UIScrollView
中制作和定位所有UIButtons
(as an Array of UIButtons
)?任何帮助表示赞赏。
【问题讨论】:
【参考方案1】:-
在情节提要中添加滚动视图/以编程方式添加
有一个包含专辑列表的数组
以编程方式创建
UIButton
并将其添加到滚动视图中
最后设置滚动视图的大小。
代码sn-p如下,
UIScrollView * scView;
UIButton * btn;
NSMutableArray * array;
float btnWidth = 44;
for(int i=0;i<array.count;i++)
btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(i*btnWidth, 0, btnWidth, 44);
[btn setTitle:[array objectAtIndex:i]forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnTapped) forControlEvents:UIControlEventTouchUpInside];
[scView addSubview:btn];
[scView setContentSize:CGSizeMake(btnWidth*array.count, 50)];
- (void)btnTapped
// button click call back method
用以下方法检查字符串的大小
- (CGSize)getHeightForText:(NSString *)text havingWidth:(CGFloat)widthValue andFont:(UIFont *)font
CGSize size = CGSizeZero;
if (text)
CGRect frame = [text boundingRectWithSize:CGSizeMake(widthValue, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@ NSFontAttributeName:font context:nil];
size = CGSizeMake(frame.size.width, frame.size.height);
return size;
将您的专辑名称传递给此方法,它会返回 CGSize
,从中获取宽度并将该宽度值设置为上面 for 循环中的按钮宽度。
【讨论】:
我已经明确说过语言是 Swift。顺便说一句,谢谢你的想法。 没注意,希望你能用这个逻辑。一切都保持不变,只需要更改语法。 是的。当然,改变它并完成你写的一切。现在我得到这样的东西,这很丑陋。 prntscr.com/9qec5g 但是,我还是有问题。 prntscr.com/9qef3c let btnWidth: CGFloat = 150 btn.frame = CGRectMake((CGFloat)((CGFloat)(i)*btnWidth), 0, btnWidth-100, 53) 这些值有效,但按钮不够宽。如果我拉伸他,布局就会中断。 请查看我更新的答案。它再次是一个 Objective-C 代码。 :)以上是关于在 UIScrollView 中添加和定位 UIButtons 数组的主要内容,如果未能解决你的问题,请参考以下文章
将 UIImage 定位在 UIScrollView 的中心进行缩放