我正在創建一個使用按鈕來存儲字母的單詞搜索遊戲,並且我需要創建一個具有一定數量的列和行的表格。所以如果桌子應該是15 x 20,我有桌子寬度和tableHeight ivar,我需要製作300個按鈕並將它們放在視圖上。我無法使用界面生成器,所以我不確定我將如何創建按鈕並將它們放置在視圖上。有沒有人對我有任何指點?如果我需要更好地解釋它,請告訴我。創建寬度和高度的按鈕表
回答
編輯:我只是在電視上看到你不想使用UITableView
另一個答案您的評論。我要離開我原來的答覆如下因爲它做到這一點(特別是如果不是所有的按鈕將當前可見的)一個好辦法,但你也可以做以下簡單的東西:
for (int i = 0; i < NUMBER_OF_ROWS; ++i) {
for (int j = 0; j < NUMBER_OF_COLUMNS; ++j) {
UIButton *newButton = [[UIButton alloc] init];
newButton.frame = ... // Calculate frame based on i and j
// Customize other behavior of the button (appearance, targets, etc) based on i and j
[superviewToAddButtonTo addSubview:newButton];
// If not using ARC: [newButton release];
}
}
UITableView
可能會讓您第一次感到困惑。
第一件事是製作一個自定義子類UITableViewController
,它爲你聲明瞭一些很好的東西,並自動將你的類設置爲符合兩個相關協議(UITableViewDelegate
和UITableViewDataSource
)。然後,您需要重寫提供有關表的信息的方法。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
cellIdentifier = @"Cell";
cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault
reuseIdentifier:cellIdentifier]; // if you're not using ARC, make sure to autorelease...
for (int i = 0; i < NUMBER_OF_COLUMNS; ++i) {
UIButton *newButton = [[UIButton alloc] init];
// Set the frame and customize the button in other ways, and then...
[cell addSubview:newButton];
// If you're not using ARC, make sure to release...
}
}
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
return NUMBER_OF_ROWS;
}
有各種其他的事情可以做,以自定義表,但應該給你你需要的基本功能。因此,爲了實際添加其中的一個你的應用程序,你會怎麼做:
MyTableViewControllerSubclass *tableViewController = [[MyTableViewControllerSubclass alloc] init];
[superViewToAddTableTo addSubview:tableViewController.tableView];
// If you're not using ARC, make sure to release the tableViewController in your dealloc method
iOS表只有一列,所以每行都是一個單元。您可以使用多個按鈕填充每個單元格,並使其看起來像多列。另請查看UICollectionView。
你需要以編程方式創建UIButtons爲:
我不需要一個tableView,我只是將這組按鈕當成一個表。 –
UIButton是一個視圖(UIView)。以編程方式創建它,給它一個框架(您將必須爲每個按鈕計算),並將其作爲子視圖添加到整個網格視圖中。
如果你不知道一個UIView是什麼,如何使一個UIView的另一個子視圖,視圖的定位是如何工作的,等等(如什麼是幀),讀我的書:
獲取屏幕的
width
。獲取屏幕的
height
。分別爲每個按鈕
width/15
和height/20
查找w
和h
。迴路R = 0至14的步驟1轉到步驟5.
循環C = 0〜19中的步驟1轉到步驟6.
製作,其中x = 0 *寬度幀, y = 0 *高度,寬度,高度
使用上述框架製作按鈕,根據需要設置標題,目標/動作。
下一個C環
下一個R環
如果你不想使用一個UITableView我建議組建一個自定義視圖容器裏面的按鈕。
循環遍歷行和列,並將UIButtons作爲子視圖添加到主視圖。你必須通過框架來處理UIButton的位置,並調整它們的高度/寬度以適應網格。下面是一些狡猾的僞代碼:
#import "ViewController.h"
@interface ViewController()
@property (nonatomic) NSMutableArray *buttons;
@end
@implementation ViewController
- (void)viewDidLoad
{
[super viewDidLoad];
// 320 x 460 for regular iPhone screen size
// 320/8 = 40 px width
// 460/10 = 46 px tall
// 8 * 10 = 80 buttons
double width = 40.0;
double height = 46.0;
double xOffset = 0.0;
double yOffset = 0.0;
int rowCount = 0;
int columnCount = 0;
for(int i = 0; i < 80; i++) {
xOffset = columnCount * width;
yOffset = rowCount * height;
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
button.frame = CGRectMake(xOffset, yOffset, width, height);
button.tintColor = [UIColor redColor];
[self.view addSubview:button];
columnCount++;
if (columnCount == 8)
columnCount = 0;
if (i == 9 ||
i == 19 ||
i == 29 ||
i == 39 ||
i == 49 ||
i == 59 ||
i == 69 ||
i == 79)
rowCount++;
}
}
@end
這可以極大地改善,我敢肯定,但它會繪製規定的尺寸按鈕的網格。
- 1. 如何創建具有統一寬度和高度的按鈕?
- 2. tkinter按鈕的高度和寬度
- 3. 按鈕寬度,高度
- 4. 按鈕寬度和高度不正確
- 5. 設置按鈕的高度與寬度
- 6. 列表視圖重複按鈕高度和寬度自定義
- 7. 如何創建寬度和高度均爲100%的Google圖表?
- 8. 獲取佈局的寬度和高度創建表單後
- 9. 創建具有特定寬度和高度的表格視圖
- 10. 給定寬度創建一個按鈕
- 11. 如何設置相同的寬度和高度的按鈕
- 12. 如何修改GWT的ActionCell中的按鈕寬度和高度
- 13. 使按鈕具有相同的高度和寬度的屏幕
- 14. 先知創建Rectangel寬度高度
- 15. 寬度和高度
- 16. 高度和寬度
- 17. 跨瀏覽器輸入按鈕的高度和寬度
- 18. jquery - 通過按鈕更改iframe的寬度和高度
- 19. 動態設置按鈕的寬度和高度
- 20. 更改buttonset中按鈕的高度和寬度jquery
- 21. 如何設置單選按鈕的高度和寬度?
- 22. 默認警報對話框按鈕的高度和寬度
- 23. 如何增加Facebook的高度,寬度和字體like按鈕
- 24. 更改Facebook的登錄按鈕寬度和高度
- 25. 不可更改的按鈕寬度和高度
- 26. 通過代碼更改按鈕的寬度和高度
- 27. 具有相同寬度和高度的Android按鈕?
- 28. 響應按鈕縮略圖的高度和寬度
- 29. 如何獲得按鈕的高度和寬度
- 30. 設置按鈕高度等於按鈕寬度
當你說「表」你只是一個大網格,對吧?你不是在說UITableView,對吧? – matt
正確。它只是一個具有預定寬度和高度的網格。 –