Apakah mungkin untuk mengubah ketinggian UIPickerView? Beberapa aplikasi tampaknya memiliki PickerView yang lebih pendek tetapi pengaturan frame yang lebih kecil tampaknya tidak berhasil dan frame tersebut terkunci di Interface Builder.
Apakah mungkin untuk mengubah ketinggian UIPickerView? Beberapa aplikasi tampaknya memiliki PickerView yang lebih pendek tetapi pengaturan frame yang lebih kecil tampaknya tidak berhasil dan frame tersebut terkunci di Interface Builder.
Jawaban:
Tampak jelas bahwa Apple tidak secara khusus mengundang penyia-nyiaan dengan tinggi default UIPickerView
, tetapi saya telah menemukan bahwa Anda dapat mencapai perubahan ketinggian tampilan dengan mengambil kendali penuh dan meneruskan ukuran bingkai yang diinginkan pada waktu pembuatan, misalnya:
smallerPicker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 120.0)];
Anda akan menemukan bahwa pada berbagai ketinggian dan lebar, terdapat gangguan visual. Jelas, gangguan ini perlu diselesaikan entah bagaimana, atau memilih ukuran lain yang tidak menunjukkannya.
Tak satu pun dari pendekatan di atas berfungsi di iOS 4.0
Tinggi pickerView tidak lagi dapat diubah ukurannya. Ada pesan yang dibuang ke konsol jika Anda mencoba mengubah bingkai alat pilih di 4.0:
-[UIPickerView setFrame:]: invalid height value 66.0 pinned to 162.0
Saya akhirnya melakukan sesuatu yang cukup radikal untuk mendapatkan efek picker yang lebih kecil yang berfungsi di OS 3.xx dan OS 4.0. Saya membiarkan alat pilih menjadi berapa pun ukuran yang diputuskan oleh SDK dan sebagai gantinya membuat jendela transparan tembus pandang pada gambar latar belakang saya di mana alat pilih tersebut menjadi terlihat. Kemudian cukup letakkan pemetik di belakang (Urutan Z) latar belakang UIImageView saya sehingga hanya sebagian pemetik yang terlihat yang ditentukan oleh jendela transparan di latar belakang saya.
Hanya ada tiga ketinggian yang valid untuk UIPickerView (162.0, 180.0 and 216.0)
.
Anda dapat menggunakan CGAffineTransformMakeTranslation
dan CGAffineTransformMakeScale
fungsi agar sesuai dengan alat pilih untuk kenyamanan Anda.
Contoh:
CGAffineTransform t0 = CGAffineTransformMakeTranslation (0, pickerview.bounds.size.height/2);
CGAffineTransform s0 = CGAffineTransformMakeScale (1.0, 0.5);
CGAffineTransform t1 = CGAffineTransformMakeTranslation (0, -pickerview.bounds.size.height/2);
pickerview.transform = CGAffineTransformConcat (t0, CGAffineTransformConcat(s0, t1));
Kode di atas mengubah ketinggian tampilan pemetik menjadi setengah dan memposisikan ulang ke posisi tepat (Kiri-x1, Atas-y1) .
Mencoba:
pickerview.transform = CGAffineTransformMakeScale(.5, 0.5);
Di iOS 4.2 & 4.3 bekerja berikut:
UIDatePicker *datePicker = [[UIDatePicker alloc] init];
datePicker.frame = CGRectMake(0, 0, 320, 180);
[self addSubview:datePicker];
Berikut ini tidak berhasil:
UIDatePicker *datePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, 320, 180)];
[self addSubview:datePicker];
Saya memiliki aplikasi yang ada di toko aplikasi dengan pemilih tanggal 3 baris. Saya pikir perubahan tinggi mungkin telah dicegah karena Anda melihat teks di bawah batas pemilih tanggal, tetapi ini juga terjadi pada pemilih tanggal ketinggian normal 216.
Yang mana bugnya? Tebakanmu sama bagusnya dengan tebakanku.
Juga ada 3 ketinggian yang valid untuk UIDatePicker
(dan UIPickerView
) 162.0, 180.0, dan 216.0. Jika Anda menyetel UIPickerView
ketinggian ke hal lain, Anda akan melihat yang berikut di konsol saat melakukan debug pada perangkat iOS.
2011-09-14 10:06:56.180 DebugHarness[1717:707] -[UIPickerView setFrame:]: invalid height value 300.0 pinned to 216.0
Saya telah menemukan bahwa Anda dapat mengedit ukuran UIPickerView - tidak dengan pembuat antarmuka. buka file .xib dengan editor teks dan setel ukuran tampilan pemilih sesuai keinginan Anda. Pembuat antarmuka tidak mengatur ulang ukuran dan tampaknya berfungsi. Saya yakin apel mengunci ukuran karena suatu alasan sehingga Anda harus bereksperimen dengan ukuran yang berbeda untuk melihat apa yang berhasil.
UIPickerView
berperilaku seperti seharusnyaUIViewController
viewWillLayoutSubviews
untuk mengubah skala / memposisikanUIPickerView
UIPopover
UIPickerView
pickerView viewForRow
untuk mengurungkan transformasi untuk subTampilanSubclass UIPickerView dan menimpa kedua metode menggunakan kode berikut. Ini menggabungkan subclassing, ketinggian tetap dan pendekatan transformasi.
#define FIXED_PICKER_HEIGHT 216.0f
- (void) setFrame:(CGRect)frame
{
CGFloat targetHeight = frame.size.height;
CGFloat scaleFactor = targetHeight / FIXED_PICKER_HEIGHT;
frame.size.height = FIXED_PICKER_HEIGHT;//fake normal conditions for super
self.transform = CGAffineTransformIdentity;//fake normal conditions for super
[super setFrame:frame];
frame.size.height = targetHeight;
CGFloat dX=self.bounds.size.width/2, dY=self.bounds.size.height/2;
self.transform = CGAffineTransformTranslate(CGAffineTransformScale(CGAffineTransformMakeTranslation(-dX, -dY), 1, scaleFactor), dX, dY);
}
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view
{
//Your code goes here
CGFloat inverseScaleFactor = FIXED_PICKER_HEIGHT/self.frame.size.height;
CGAffineTransform scale = CGAffineTransformMakeScale(1, inverseScaleFactor);
view.transform = scale;
return view;
}
Cara mudah untuk mengubah tinggi tampilan alat pilih adalah dengan menyematkan alat pilih dalam UIView, menyesuaikan tinggi tampilan induk dengan tinggi yang ingin Anda lihat dari alat pilih, lalu aktifkan "Klip Subview" di Interface Builder pada induk UIView atau diatur view.clipsToBounds = true
dalam kode.
Clip Subviews
. juga ukuran UIPickerView
harus lebih tinggi - dan Anda harus mengarahkan pusat Anda UIPickerView
agar terlihat di dalam orang tuaUIView
UIPickerView
dari kode).
Saya tidak dapat mengikuti saran di atas.
Saya menonton banyak tutorial dan menemukan yang ini paling bermanfaat:
Saya menambahkan kode berikut untuk menyetel ketinggian baru di dalam metode "viewDidLoad", yang bekerja di aplikasi saya.
UIPickerView *picker = [[UIPickerView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 120.0)];
[self.view addSubview:picker];
picker.delegate = self;
picker.dataSource = self;
Semoga bermanfaat!
Ini telah banyak berubah di iOS 9 (di iOS 8 sangat mirip dengan apa yang kita lihat di sini). Jika Anda mampu menargetkan iOS 9 saja, maka Anda mengubah ukuran fileUIPickerView
sesuai keinginan Anda, dengan mengatur bingkainya. Baik!
Ini dari Catatan Rilis iOS 9
UIPickerView dan UIDatePicker sekarang dapat diubah ukurannya dan adaptif — sebelumnya, tampilan ini akan memberlakukan ukuran default meskipun Anda mencoba mengubah ukurannya. Tampilan ini juga sekarang default ke lebar 320 poin di semua perangkat, bukan lebar perangkat di iPhone.
Antarmuka yang mengandalkan penegakan lama ukuran default kemungkinan akan terlihat salah saat dikompilasi untuk iOS 9. Masalah apa pun yang ditemui dapat diselesaikan dengan sepenuhnya membatasi atau mengubah ukuran tampilan alat pilih ke ukuran yang diinginkan alih-alih mengandalkan perilaku implisit.
Saya bekerja dengan ios 7, Xcode 5. Saya dapat menyesuaikan ketinggian pemilih tanggal secara tidak langsung dengan melampirkannya dalam tampilan. Ketinggian tampilan kontainer dapat disesuaikan.
Buat tampilan di IB atau kode. Tambahkan alat pilih Anda sebagai subview dari tampilan ini. Ubah ukuran tampilan. Ini paling mudah dilakukan di IB. Buat batasan dari tampilan ke tampilan supernya dan dari alat pilih ke tampilan baru ini.
Karena kurva Picker di sekitarnya tumpah ke atas dan bawah tampilan. Anda dapat melihat di IB ketika Anda menambahkan batasan atas dan bawah dari alat pilih ke tampilan itu menunjukkan ruang standar sekitar 16 poin di atas dan di bawah wadah superview. Setel tampilan ke klip jika Anda tidak menginginkan perilaku ini (peringatan buruk).
Inilah yang terlihat pada 96 poin tinggi pada iPhone 5. Alat pilih dengan spillover tingginya sekitar 130 poin. Sangat kurus!
Saya menggunakan ini dalam proyek saya untuk mencegah pemetik menyebar ke ketinggian yang tidak perlu. Teknik ini memotongnya dan memaksa tumpahan yang lebih erat. Ini sebenarnya terlihat lebih licin untuk menjadi sedikit lebih kompak.
Berikut gambar tampilan yang menunjukkan spillover.
Inilah batasan IB yang saya tambahkan.
Meskipun ukurannya tidak berubah, trik lain dapat membantu dalam situasi ketika UIPicker terletak di bagian bawah layar.
Seseorang dapat mencoba memindahkannya sedikit ke bawah, tetapi baris tengah harus tetap terlihat. Ini akan membantu mengungkapkan beberapa ruang di atas alat pilih karena baris bawah akan berada di luar layar.
Saya ulangi bahwa ini bukan cara mengubah ketinggian tampilan UIPicker tetapi beberapa ide tentang apa yang dapat Anda lakukan jika semua upaya lain gagal.
Ok, setelah berjuang lama dengan pickerview bodoh di iOS 4, saya memutuskan untuk mengubah kontrol saya menjadi tabel sederhana: berikut kodenya:
ComboBoxView.m = which is actually looks more like pickerview.
//
// ComboBoxView.m
// iTrophy
//
// Created by Gal Blank on 8/18/10.
//
#import "ComboBoxView.h"
#import "AwardsStruct.h"
@implementation ComboBoxView
@synthesize displayedObjects;
#pragma mark -
#pragma mark Initialization
/*
- (id)initWithStyle:(UITableViewStyle)style {
// Override initWithStyle: if you create the controller programmatically and want to perform customization that is not appropriate for viewDidLoad.
if ((self = [super initWithStyle:style])) {
}
return self;
}
*/
#pragma mark -
#pragma mark View lifecycle
/*
- (void)viewDidLoad {
[super viewDidLoad];
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
*/
/*
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
}
*/
/*
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
}
*/
/*
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
}
*/
/*
- (void)viewDidDisappear:(BOOL)animated {
[super viewDidDisappear:animated];
}
*/
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/
#pragma mark -
#pragma mark Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
// Return the number of sections.
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
// Return the number of rows in the section.
self.tableView.separatorStyle = UITableViewCellSeparatorStyleSingleLine;
return [[self displayedObjects] count];
}
// Customize the appearance of table view cells.
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
NSString *MyIdentifier = [NSString stringWithFormat:@"MyIdentifier %i", indexPath.row];
UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:MyIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
//cell.contentView.frame = CGRectMake(0, 0, 230.0,16);
UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0, 5, 230.0,19)] autorelease];
VivatAwardsStruct *vType = [displayedObjects objectAtIndex:indexPath.row];
NSString *section = [vType awardType];
label.tag = 1;
label.font = [UIFont systemFontOfSize:17.0];
label.text = section;
label.textAlignment = UITextAlignmentCenter;
label.baselineAdjustment = UIBaselineAdjustmentAlignCenters;
label.adjustsFontSizeToFitWidth=YES;
label.textColor = [UIColor blackColor];
//label.autoresizingMask = UIViewAutoresizingFlexibleHeight;
[cell.contentView addSubview:label];
//UIImage *image = nil;
label.backgroundColor = [UIColor whiteColor];
//image = [awards awardImage];
//image = [image imageScaledToSize:CGSizeMake(32.0, 32.0)];
//[cell setAccessoryType:UITableViewCellAccessoryDisclosureIndicator];
//UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
//cell.accessoryView = imageView;
//[imageView release];
}
return cell;
}
/*
// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the specified item to be editable.
return YES;
}
*/
/*
// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
// Delete the row from the data source
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
}
else if (editingStyle == UITableViewCellEditingStyleInsert) {
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view
}
}
*/
/*
// Override to support rearranging the table view.
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath {
}
*/
/*
// Override to support conditional rearranging of the table view.
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath {
// Return NO if you do not want the item to be re-orderable.
return YES;
}
*/
#pragma mark -
#pragma mark Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
// Navigation logic may go here. Create and push another view controller.
/*
<#DetailViewController#> *detailViewController = [[<#DetailViewController#> alloc] initWithNibName:@"<#Nib name#>" bundle:nil];
// ...
// Pass the selected object to the new view controller.
[self.navigationController pushViewController:detailViewController animated:YES];
[detailViewController release];
*/
}
#pragma mark -
#pragma mark Memory management
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Relinquish ownership any cached data, images, etc that aren't in use.
}
- (void)viewDidUnload {
// Relinquish ownership of anything that can be recreated in viewDidLoad or on demand.
// For example: self.myOutlet = nil;
}
- (void)dealloc {
[super dealloc];
}
@end
Ini adalah file .h untuk itu:
//
// ComboBoxView.h
// iTrophy
//
// Created by Gal Blank on 8/18/10.
//
#import <UIKit/UIKit.h>
@interface ComboBoxView : UITableViewController {
NSMutableArray *displayedObjects;
}
@property (nonatomic, retain) NSMutableArray *displayedObjects;
@end
now, in the ViewController where I had Apple UIPickerView I replaced with my own ComboBox view and made it size what ever I wish.
ComboBoxView *mypickerholder = [[ComboBoxView alloc] init];
[mypickerholder.view setFrame:CGRectMake(50, 220, 230, 80)];
[mypickerholder setDisplayedObjects:awardTypesArray];
itu saja, sekarang satu-satunya yang tersisa adalah membuat variabel anggota dalam tampilan kotak kombo yang akan menampung pemilihan baris saat ini, dan kita siap melakukannya.
Nikmati semuanya.
Anda biasanya tidak dapat melakukannya di xib atau mengatur frame secara terprogram tetapi jika Anda membuka xib induknya sebagai sumber dan mengubah tinggi dari sana maka itu berfungsi. Klik kanan xib di mana pickerview berada, Cari pickerview dan Anda dapat menemukan tinggi, lebar, dll. di tag itu, Ubah tinggi di sana lalu simpan file.
<pickerView contentMode="scaleToFill" id="pai-pm-hjZ">
<rect key="frame" x="0.0" y="41" width="320" height="100"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMaxY="YES"/>
<connections>
<outlet property="dataSource" destination="-1" id="Mo2-zp-Sl4"/>
<outlet property="delegate" destination="-1" id="nfW-lU-tsU"/>
</connections>
</pickerView>
Sejauh yang saya tahu, tidak mungkin mengecilkan UIPickerView. Saya juga belum pernah melihat yang lebih pendek digunakan di mana pun. Dugaan saya adalah bahwa itu adalah implementasi khusus jika mereka berhasil mengecilkannya.
Jika Anda ingin membuat picker Anda di IB, Anda dapat mengubah ukurannya ke ukuran yang lebih kecil. Periksa untuk memastikannya masih menggambar dengan benar, karena ada titik di mana itu terlihat mengerikan.
Swift : Anda perlu menambahkan subview dengan clip to bounds
var DateView = UIView(frame: CGRectMake(0, 0, view.frame.width, 100))
DateView.layer.borderWidth=1
DateView.clipsToBounds = true
var myDatepicker = UIDatePicker(frame:CGRectMake(0,-20,view.frame.width,162));
DateView.addSubview(myDatepicker);
self.view.addSubview(DateView)
Ini harus menambahkan pemilih tanggal 100 tinggi yang terpotong di bagian atas pengontrol tampilan.
Trik saya: gunakan layer mask datepicker untuk membuat datePicker beberapa bagian terlihat. seperti yang Anda lihat seperti mengubah bingkai datepicke.
- (void)timeSelect:(UIButton *)timeButton {
UIDatePicker *timePicker = [[UIDatePicker alloc] initWithFrame:CGRectMake(0, 0, kScreenWidth, 550)];
timePicker.backgroundColor = [UIColor whiteColor];
timePicker.layer.mask = [self maskLayerWithDatePicker:timePicker];
timePicker.layer.masksToBounds = YES;
timePicker.datePickerMode = UIDatePickerModeTime;
[self.view addSubview:timePicker];
}
- (CALayer *)maskLayerWithDatePicker:(UIDatePicker *)datePicker {
CAShapeLayer *shapeLayer = [[CAShapeLayer alloc] init];
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:CGRectMake(0, 0, datePicker.width*0.8, datePicker.height*0.8) cornerRadius:10];
shapeLayer.path = path.CGPath;
return shapeLayer;
}
Sematkan dalam tampilan tumpukan. Stack view adalah komponen yang baru-baru ini ditambahkan oleh Apple di iOS SDK mereka untuk mencerminkan implementasi berbasis grid di pustaka front end berbasis web java script seperti bootstrap.
Seperti disebutkan di atas UIPickerView
sekarang dapat diubah ukurannya. Saya hanya ingin menambahkan bahwa jika Anda ingin mengubah tinggi pickerView dalam sel tableView, saya tidak berhasil dengan mengatur jangkar ketinggian ke sebuah konstanta. Namun, penggunaan lessThanOrEqualToConstant
tampaknya berhasil.
class PickerViewCell: UITableViewCell {
let pickerView = UIPickerView()
func setup() {
// call this from however you initialize your cell
self.contentView.addSubview(self.pickerView)
self.pickerView.translatesAutoresizingMaskIntoConstraints = false
let constraints: [NSLayoutConstraint] = [
// pin the pickerView to the contentView's layoutMarginsGuide
self.pickerView.leadingAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.leadingAnchor),
self.pickerView.topAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.topAnchor),
self.pickerView.trailingAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.trailingAnchor),
self.pickerView.bottomAnchor.constraint(equalTo: self.contentView.layoutMarginsGuide.bottomAnchor),
// set the height using lessThanOrEqualToConstant
self.pickerView.heightAnchor.constraint(lessThanOrEqualToConstant: 100)
]
NSLayoutConstraint.activate(constraints)
}
}
Setelah seharian menggaruk-garuk kepala, saya menemukan sesuatu yang cocok untuk saya. Kode di bawah ini akan membuat ulang UIDatePicker setiap kali pengguna mengubah orientasi telepon. Ini akan menghapus gangguan apa pun yang dimiliki UIDatePicker setelah perubahan orientasi.
Karena kita membuat ulang UIDatePicker, kita membutuhkan variabel instan yang akan menyimpan nilai tanggal yang dipilih. Kode di bawah diuji pada iOS 4.0.
@interface AdvanceDateViewController : UIViewController<UIPickerViewDelegate> {
UIDatePicker *datePicker;
NSDate *date;
}
@property (nonatomic, retain) UIDatePicker *datePicker;
@property (nonatomic, retain) NSDate *date;
-(void)resizeViewWithOrientation:(UIInterfaceOrientation) orientation;
@end
@implementation AdvanceDateViewController
@synthesize datePicker, date;
- (void)viewDidLoad {
[super viewDidLoad];
[self resizeViewWithOrientation:self.interfaceOrientation];
}
-(void)viewWillAppear:(BOOL)animated{
[super viewWillAppear:animated];
[self resizeViewWithOrientation:self.interfaceOrientation];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;
}
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
[self resizeViewWithOrientation:toInterfaceOrientation];
}
-(void)resizeViewWithOrientation:(UIInterfaceOrientation) orientation{
[self.datePicker removeFromSuperview];
[self.datePicker removeTarget:self action:@selector(refreshPickupDate) forControlEvents:UIControlEventValueChanged];
self.datePicker = nil;
//(Re)initialize the datepicker, thanks to Apple's buggy UIDatePicker implementation
UIDatePicker *dummyDatePicker = [[UIDatePicker alloc] init];
self.datePicker = dummyDatePicker;
[dummyDatePicker release];
[self.datePicker setDate:self.date animated:YES];
[self.datePicker addTarget:self action:@selector(refreshPickupDate) forControlEvents:UIControlEventValueChanged];
if(UIInterfaceOrientationIsLandscape(orientation)){
self.datePicker.frame = CGRectMake(0, 118, 480, 162);
} else {
self.datePicker.frame = CGRectMake(0, 200, 320, 216);
}
[self.view addSubview:self.datePicker];
[self.view setNeedsDisplay];
}
@end
stockPicker = [[UIPickerView alloc] init];
stockPicker.frame = CGRectMake(70.0,155, 180,100);
Jika Anda ingin mengatur ukuran UiPickerView. Kode di atas pasti akan bekerja untuk Anda.
Di iOS 5.0, saya mendapatkan yang berikut ini untuk bekerja:
UIDatePicker *picker = [[UIDatePicker alloc] init];
picker.frame = CGRectMake(0.0, 0.0, 320.0, 160.0);
Ini membuat pemilih tanggal seperti yang digunakan Apple di aplikasi Kalender saat membuat acara baru dalam mode lanskap. (Tinggi 3 baris, bukan 5.) Ini tidak berfungsi ketika saya mengatur bingkai dalam initWithFrame:
metode, tetapi sejauh ini berfungsi saat mengaturnya menggunakan metode terpisah.
untuk iOS 5:
jika Anda melihat sekilas UIPickerView Protocol Referensi
Anda akan menemukan
– pickerView:rowHeightForComponent:
– pickerView:widthForComponent:
Saya pikir ini yang pertama Anda cari
pickerView:rowHeightForComponent:
adalah metode delegasi untuk menentukan tinggi setiap baris - bukan ketinggian tampilan alat pilih.